将我的Android应用程序签名为系统应用程序

dav*_*vid 11 android android-permissions

将我的Android应用程序签名为系统应用程序

在我的公司,我们希望在现场完全控制电池消耗,仅使用2g和gps可以快速耗尽电池.我们的决定是我们需要拥有移动电话的root权限,这样当手机闲置时,我们会关闭那些不必要的电池消耗.而且我们也不允许用户将其卸载并清除数据.

我的问题是:

  1. 我在哪里可以获得这些签名密钥?
  2. 是否会像root用户那样成功设置签名?
  3. Root vs Signed与key有什么区别?

Apa*_*min 13

以下是你的答案,

  1. 您可以从HERE找到平台密钥 .签署apk(用于linux)的命令是:

    java -jar signapk.jar -w platform.x509.pem platform.pk8 APPLICATION.apk APPLICATION_sign.apk

  2. 如果您使用平台密钥对apk进行签名,则不需要root访问权限,只需从"adb install"命令安装即可,是的,就像root一样,因为它可以访问所有内部API,但请记住,如果你的应用程序是系统签名然后你不能写外部存储.

  3. 首先,不要结合root用户,其中系统应用程序是应用程序类型,区别于链接下面的正常应用程序可能会清除你对它的困惑.

    什么 - 是最差之间,Android的用户应用程序与 - 根接入和A-系统-AP

  • 我们是否需要在 Linux 或 Windows 上安装任何运行时才能运行此命令。上面的命令给我错误“无法加载任何给定的库:[conscrypt_openjdk_jni windows-x86_64,conscrypt_openjdk_jni]” (2认同)

Hen*_*eMS 11

回答你的三个问题:

1 - 我从哪里获得这些签名密钥?

来自发布密钥部分的Android自己的文档

Android树包含build/target/product/security下的测试密钥

但接下来的部分是你应该注意的地方

由于测试密钥是公知的,任何人都可以使用相同的密钥签署自己的.apk文件,这可能允许他们替换劫持操作系统映像中内置的系统应用程序.因此,使用一组只有可以访问的特殊释放密钥来签署任何公开发布或部署的Android操作系统映像至关重要.

所以基本上除非你能以某种方式获得对制造商的pvt键的访问权限,否则可能很难实现这一点.这就是为什么之前评论中的用户说这通常是通过生成自己的构建来实现的.

2 - 它是否会像root访问一样如果我成功设法签署它?

您不会通过这样做获得"root访问权限",但您将获得极高级别的访问权限.具体来说,这实现了你的目的是你将被授予声明的权限android:protectionLevel="signature",可以说是最独特的权限.

另一个危险后果(或乐趣,取决于你如何看待它)是你现在可以在系统用户进程android:sharedUserId="android.uid.system"下运行你的应用程序- 在android的"进程沙箱"安全规则下,这通常会失败.

3 - Root与Signed签名有什么区别?

使用您的构建中使用平台密钥签名的应用程序,您可以获得上述权限,或使用UID 1000(系统uid)运行您的应用程序,因为它具有权限,因此在Android中比其他应用程序的UID强大得多请求,这是Android的特定行为.在root设备中,您可以使用在基于Linux的系统中具有最广泛访问权限的UID 0(root),您可以绕过操作系统上的大多数安全沙盒/检查/防护.

希望这可以帮助 ;)