创建系统应用程序

时间:2013-06-20 19:48:48

标签: android android-manifest root

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

我使用root固定电话和库存固件。

5 个答案:

答案 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/appPush my apk to /system/app

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

答案 4 :(得分:0)

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

类型1:与设备ROM具有相同签名的应用。

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

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