我应该怎么做才能创建一个系统应用程序(获取在清单文件中使用android:sharedUserId="android.uid.system"
的权限,而不会从包管理器收到有关认证问题的错误?
我使用root固定电话和库存固件。
答案 0 :(得分:23)
好的,我认为我从伟大的xda开发人员那里找到了解决方法:http://forum.xda-developers.com/showthread.php?t=1776095这里是完整的描述如何获取对平台密钥签名的应用程序的访问权限。
你是用这种方法申请的吗?
很有意思的是,用户从堆栈而不是调查难题立即说你无法解决它,然后降低新手用户的声誉......
答案 1 :(得分:18)
创建系统应用程序应该怎么做
有两种类型的系统应用程序:
系统分区上安装的应用程序,可由具有root权限的用户完成
由签署固件的相同签名密钥签名的应用
获取使用android的权限:sharedUserId =“android.uid.system”
这肯定会要求您的应用程序使用签署固件的相同签名密钥进行签名。对于任何android:sharedUserId
都是如此。
但有些人编辑股票应用程序,准备zip文件,用户可以通过恢复更新系统应用程序。
欢迎您提供任何证据证明他们的行为涉及android:sharedUserId="android.uid.system"
。
答案 2 :(得分:2)
必须使用平台密钥对系统应用程序进行签名。这是由开发人员在自己的设备或移动运营商上部署android平台完成的。
如果是这种情况,最简单的方法是将其添加到Android.mk:
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
如果添加这些行而未在清单中添加android:sharedUserId =“ android.uid.system”,那么您将是platform_app。系统应用程序比平台应用程序更具特权。使用平台密钥并以系统用户身份运行。
如果您不是平台供应商,则平台供应商将需要使用其平台密钥对您的应用程序进行签名。包括我公司在内的一些供应商将为第三者这样做,以证明这样做的正当理由。
没有签名,您的应用程序只能在有根设备上使用。
答案 3 :(得分:0)
我不需要使用固件签名来签署我的应用程序!我有一个root设备。因此,我可以授予自己使用adb写入某些目录的权利。
我使用以下步骤将我的应用移至/system/priv-app
而不是/system/app
:Push my apk to /system/app
现在,我可以访问系统权限,例如android.permission.SHUTDOWN
答案 4 :(得分:0)
有两种类型的系统应用程序。
类型1:与设备ROM具有相同签名的应用。
类型2:设备存储位置中位于system / priv-app(可能会因adnroid版本而异)中的已签名应用。