如何使用系统权限编译Android应用程序

25

我需要使用系统权限编译一个应用程序,以便使用目标应用程序 com.android.settings。目前在尝试运行我的 apk 时,我收到以下错误消息:

测试运行失败:权限拒绝: 启动仪表盘 ComponentInfo{com.jayway.test/android.test.InstrumentationTestRunner} from pid=354, uid=354 not allowed because package com.jayway.test does not have a signature matching the target com.android.settings

如何使用系统权限编译我的应用程序?


4
只有在创建自己的固件时,才能使用系统签名密钥对应用程序进行签名。 - CommonsWare
我想先尝试一下 Android 模拟器。我可以通过选择 debug 选项和 choosecombo 命令编译 Android 模拟器,然后尝试安装自己的应用程序吗? - Michalis
请在此处查看答案:https://dev59.com/Am435IYBdhLWcg3wfgMf#21555223 - wwjdm
3个回答

30

经过一番搜索,我找到了如何使用系统(平台)密钥签署我的应用程序。

系统签名位于目录<root-of-android-source-tree>/build/target/product/security中。您可以使用它们来使用系统权限签署您的应用程序。


1
构建一个系统应用程序并添加到固件中,是否需要导出APK?我已经成功获取了Google的证书/密钥库,并能够在模拟器中将应用程序作为系统应用程序运行,但现在我需要将此应用程序交给固件工程师,但不确定如何构建它。 - Someone Somewhere
我想知道/bin目录下的.apk文件是否可用,因为它已经使用google_certificate.keystore签名。 - Someone Somewhere
从您的链接来看,adb install YourApp-signed.apk 无法工作,因为:PackageManager(432):无法将平台包安装到用户存储。 - barkside
30
链接已失效,有人有缓存副本吗?这就是为什么你应该给一个全面的答案,而不是一个链接。 - matt5784
9
请问您在哪里找到<root-of-android-source-tree>/build/target/product/security?我不太明白。需要帮忙吗? :) - mboy

2
  1. 将android:sharedUserId="android.uid.system"添加到清单文件中

  2. 下载系统签名文件: platform.x509.pem platform.pk8

链接: https://android.googlesource.com/platform/build/+/android-8.0.0_r17/target/product/security/

  1. 通过终端进行应用签名 (java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk) (首先需要把所有文件放在一个文件夹里), 或使用keytool-importkeypair创建证书google_certificate.keystore,然后

keytool-importkeypair的下载和说明链接:

https://github.com/getfatday/keytool-importkeypair

  1. 完成以上步骤后,将已签名的系统应用程序安装到您的设备上。祝好运!

这个应用程序能否放在Google商店里? - Spook
下面的评论有答案吗?我还想知道是否可能在商店发布具有系统访问权限的应用程序,可能不是针对公众使用,但至少是企业内部的私人使用。 - Oscar Reyes

-4
对我来说,答案很简单,就是删除debug.keystore文件。AVD的默认存储位置在OS X和Linux上是~/.android/,在Windows XP上是C:\Documents and Settings\.android\,在Windows Vista上是C:\Users\.android\。
在Eclipse中,我“清理”了项目,从模拟器中卸载了App和TestApp,然后——哇,一切都重新正常运行了。

虽然这个解决方案解决了您的问题,并且在我遇到过几次过期调试密钥库的问题时也起到了作用,但它指的是另一个问题。 - Tim Kist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接