sistema similitudes que operativo mejor entre cuadro comparativo android android-source

que - similitudes entre android y ios



¿Cuál es la diferencia entre las aplicaciones del sistema y las aplicaciones privilegiadas en Android? (2)

Así que en 4.3 había un concepto de aplicaciones del sistema. Los archivos APK que se colocaron en /system/app recibieron privilegios de sistema. A partir de 4.4, hay un nuevo concepto de "aplicación privilegiada". Las aplicaciones con privilegios se almacenan en el directorio /system/priv-app y parecen tratarse de manera diferente. Si busca en el código fuente de AOSP, en PackageManagerService , verá nuevos métodos como

static boolean locationIsPrivileged(File path) { try { final String privilegedAppDir = new File(Environment.getRootDirectory(), "priv-app") .getCanonicalPath(); return path.getCanonicalPath().startsWith(privilegedAppDir); } catch (IOException e) { Slog.e(TAG, "Unable to access code path " + path); } return false; }

Así que aquí hay un ejemplo de una situación en la que estos difieren.

public final void addActivity(PackageParser.Activity a, String type) { ... if (!systemApp && intent.getPriority() > 0 && "activity".equals(type)) { intent.setPriority(0); Log.w(TAG, "Package " + a.info.applicationInfo.packageName + " has activity " + a.className + " with priority > 0, forcing to 0"); } ...

Esto afecta la prioridad de cualquier actividad que no esté definida como aplicaciones del sistema. Esto parece implicar que no puede agregar una actividad al administrador de paquetes cuya prioridad sea mayor que 0, a menos que sea una aplicación del sistema. Esto no excluye a las aplicaciones privilegiadas por lo que puedo decir (hay mucha lógica aquí, puedo estar equivocado).

Mi pregunta es, ¿qué implica esto exactamente? Si mi aplicación tiene privilegios, pero no el sistema, ¿qué diferencia hará eso? En PackageManagerService puede encontrar varias cosas que difieren entre el sistema y las aplicaciones privilegiadas, no son exactamente lo mismo. Debería haber algún tipo de ideología detrás de las aplicaciones privilegiadas, de lo contrario, simplemente habrían dicho:

if locationIsPrivileged: app.flags |= FLAG_SYSTEM

Y hecho con eso. Este es un concepto nuevo, y creo que sería importante conocer la diferencia entre este tipo de aplicaciones para cualquiera que esté realizando el desarrollo de AOSP a partir de 4.4.


Entonces, después de investigar un poco, queda claro que las aplicaciones en priv-app son elegibles para los permisos del sistema, de la misma manera que las aplicaciones antiguas solían ser elegibles para reclamar permisos del sistema al estar en la aplicación del sistema. La única documentación oficial de Google que pude encontrar vino en forma de mensaje de confirmación: Cometa hash: ccbf84f44c9e6a5ed3c08673614826bb237afc54

Algunas aplicaciones del sistema son más del sistema que otras

Los permisos "signatureOrSystem" ya no están disponibles para todas las aplicaciones que residen en la partición / system. En su lugar, hay un nuevo directorio / system / priv-app, y solo las aplicaciones cuyos archivos APK están en ese directorio pueden usar los permisos de signatureOrSystem sin compartir el certificado de la plataforma. Esto reducirá el área de superficie para posibles explotaciones de aplicaciones empaquetadas en el sistema para intentar obtener acceso a operaciones con permisos.

El indicador ApplicationInfo.FLAG_SYSTEM continúa significando lo que dice en la documentación: indica que la aplicación apk se incluyó en la partición / system. Se ha introducido una nueva bandera oculta FLAG_PRIVILEGED que refleja el derecho real de acceder a estos permisos.

Actualización: a partir de Android 8.0, la aplicación privada ha cambiado ligeramente con la adición de la lista blanca de permisos privilegiados. Además de estar en la aplicación priv, su aplicación también debe agregarse a una lista blanca para obtener varios permisos del sistema. La información sobre esto se puede encontrar aquí: https://source.android.com/devices/tech/config/perms-whitelist


Mi obesidad fue, priv-app tiene permiso de root. Supongamos que si instalas una aplicación rooteada en el sistema / app, todavía se requiere que supersu conceda root. Pero si instala la misma aplicación rooteada en system / priv-app, no necesita supersu en absoluto. He observado esto mientras experimentaba con una rom, limpiando todas las aplicaciones chinas e instalando adaway, titanio, etc.