首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android上的系统应用程序和特权应用程序有什么区别?

Android上的系统应用程序和特权应用程序有什么区别?
EN

Stack Overflow用户
提问于 2013-11-08 20:41:09
回答 1查看 84.3K关注 0票数 77

因此,在4.3中有一个系统应用的概念。放置在/system/app中的APK被授予系统特权。从4.4开始,就有了“特权应用”的新概念。特权应用程序存储在/system/priv-app目录中,似乎受到不同的对待。如果您在PackageManagerService下面查看AOSP源代码,您将看到新的方法,如

代码语言:javascript
复制
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;
}

这里有一个例子,说明了这两种不同的情况。

代码语言:javascript
复制
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");
            }
...

这会影响未定义为系统应用程序的任何活动的优先级。这似乎意味着您不能向优先级高于0的包管理器添加活动,除非您是一个系统应用程序。据我所知,这确实是而不是排除了特权应用程序(这里有很多逻辑,我可能错了)。

我的问题是,这究竟意味着什么?如果我的应用程序是特权的,而不是系统,那会有什么不同呢?在PackageManagerService中,您可以发现系统和特权应用程序之间的不同之处,它们并不完全相同。在特权应用程序背后应该有某种意识形态,否则他们只会说:

代码语言:javascript
复制
if locationIsPrivileged: app.flags |= FLAG_SYSTEM

然后就结束了。这是一个新概念,我认为,对于任何在4.4岁时从事AOSP开发的人来说,了解这类应用程序之间的区别是很重要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-20 18:49:13

因此,经过一番研究后,很明显,priv-app中的应用程序有资格获得系统权限,就像以前的应用程序一样,可以通过在系统应用程序中获得系统权限。我能找到的唯一官方Google文档是以提交消息的形式出现的:提交散列: ccbf84f44c9e6a5ed3c08673614826bb237afc54。

有些系统应用程序比另一些系统更有系统。 "signatureOrSystem“权限不再适用于驻留在/system分区中的所有应用程序。相反,有一个新的/system/priv-app目录,只有app位于该目录中的应用程序才允许使用signatureOrSystem权限而不共享平台证书。这将减少可能利用系统捆绑应用程序的表面积,以获得权限保护操作的访问权限。 ApplicationInfo.FLAG_SYSTEM标志继续表示文档中的内容:它指示应用程序apk被捆绑在/system分区上。引入了一个新的隐藏标志FLAG_PRIVILEGED,它反映了访问这些权限的实际权限。

更新:截至Android8.0,priv略有变化,增加了特权权限Whitelisting。除了在priv-app中,您的应用程序还必须添加到白名单,以获得各种系统权限。有关这方面的信息可以在这里找到:https://source.android.com/devices/tech/config/perms-whitelist

票数 100
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19868138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档