42

我应该怎么做才能创建一个系统应用程序(以获得android:sharedUserId="android.uid.system"在清单文件中使用的权利而不会收到包管理器关于认证问题的错误?

我使用带有股票固件的植根手机。

4

5 回答 5

30

好的,我认为我从优秀的 xda 开发人员那里找到了解决方案:http: //forum.xda-developers.com/showthread.php? t=1776095这里是完整描述如何获得对平台密钥签名的应用程序的访问权限。你应用这种方法吗?
PS有趣的是,来自堆栈而不是立即调查难题的用户说您无法解决它,然后降低新手用户的声誉......

于 2013-06-20T21:04:01.513 回答
23

我应该做什么来创建一个系统应用程序

有两种类型的系统应用程序:

  • 安装在系统分区的应用程序,可由具有root权限的用户完成

  • 由与固件签名相同的签名密钥签名的应用程序

获取使用android:sharedUserId="android.uid.system"的权利

这肯定需要您的应用程序使用与固件签名相同的签名密钥进行签名。对于任何android:sharedUserId.

但是有些人编辑股票应用程序,准备 zip 文件,用户可以通过恢复来更新系统应用程序。

欢迎您提供任何证据证明他们的所作所为以某种方式涉及android:sharedUserId="android.uid.system"

于 2013-06-20T20:32:56.407 回答
9

系统应用程序必须使用平台密钥进行签名。这是由开发人员在自己的设备或移动运营商上部署 android 平台来完成的。

如果这是您的情况,最简单的方法是将其添加到您的 Android.mk:

LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true

如果您添加这些行而不将 android:sharedUserId="android.uid.system" 添加到您的清单中,您将成为一个 platform_app。系统应用程序比平台应用程序更有特权。它使用平台密钥并以系统用户身份运行。

如果您不是平台供应商,则平台供应商需要使用他们的平台密钥对您的应用程序进行签名。包括我公司在内的一些供应商会为第 3 方这样做,以证明这样做的正当理由。

如果没有签名,您的应用程序只能在有根设备上使用。

于 2019-10-16T18:38:08.880 回答
1

我不需要使用固件签名来签署我的应用程序!我有一个根设备。因此,我可以授予自己使用 adb 写入某些目录的权限。

我将我的应用程序移动到/system/priv-app而不是/system/app使用这些步骤:将我的 apk 推送到 /system/app

现在,我可以访问系统权限,例如android.permission.SHUTDOWN

于 2018-02-08T16:46:12.353 回答
0

有两种类型的系统应用程序。

类型 1:与 Device ROM 签名相同的 App。

类型 2:设备存储位置中 system/priv-app 中的签名应用程序(可能因 adnroid 版本而异)。

访问此链接-> http://www.archive.ricston.com/blog/explaining-behavior-android-application-system-apps-nonsystem-apps/

于 2019-09-13T06:14:15.367 回答