Quelle est la différence entre le système des applications et privilégié d'applications sur Android?

Donc en 4.3 il y avait un concept de Système d'applications. Apk qui ont été placés dans /system/app ont reçu des privilèges système. Que de 4.4, il est un nouveau concept de "privilégiés app". Privilégié les applications sont stockées dans /system/priv-app répertoire et semblent être traités différemment. Si vous regardez dans le PSBA code Source, sous PackageManagerService, vous verrez de nouvelles méthodes telles que

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;
}

Voici donc un exemple d'une situation où ceux-ci diffèrent.

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");
            }
...

Cela affecte le degré de priorité des activités qui ne sont pas définis comme des applications du système. Cela semble impliquer que vous ne pouvez pas ajouter une activité pour le gestionnaire de paquets qui est la priorité est supérieure à 0, sauf si vous êtes une application système. Ce n' pas empêche privilégié les applications aussi loin que je peux dire (il y a beaucoup de logique ici, je me trompe peut-être.).

Ma question est qu'est-ce exactement est ce que cela implique? Si mon application est privilégié, mais pas du système, quelle différence que faire? Dans PackageManagerService vous pouvez trouver différentes choses qui diffèrent entre le système et privilégié applications, ils ne sont pas exactement les mêmes. Il devrait y avoir une sorte d'idéologie derrière privilégié apps, de quoi ils ont juste dit:

if locationIsPrivileged: app.flags |= FLAG_SYSTEM

et de été fait avec elle. C'est un nouveau concept, et je pense qu'il serait important de connaître la différence entre ces types d'applications pour n'importe qui qui est en train de faire PSBA développement de 4.4.

InformationsquelleAutor Andrew T. | 2013-11-08