如何使用系统签名密钥签署我的应用程序?

Mic*_*lis 8 android

我需要创建一个Robotium应用程序,它将使用"设置"应用程序从菜单设置 - >无线和网络 - > Wi-Fi打开/关闭WIFi.我设法在这里找到一些示例代码,演示如何通过仅使用apk文件启动应用程序.问题是我的Robotium应用程序应该与(系统)设置应用程序具有相同的签名.在尝试运行应用程序时,我收到错误消息:

测试运行失败:权限拒绝:从pid = 354开始检测ComponentInfo {com.jayway.test/android.test.InstrumentationTestRunner},因为包com.jayway.test没有与目标com匹配的签名,所以不允许使用uid = 354. android.settings

  1. 我可以以某种方式使其与Android模拟器一起使用吗?
  2. 如果我编译Android手机图像,我如何在我的应用程序中使用Android系统签名?

Nir*_*ava 15

我遇到了同样的问题..有一些权限只允许系统应用程序拥有.我试图使用权限adb shell dumpsys从我的应用程序访问 命令android.permission.DUMP.

对此的解决方案是......

在项目的Android清单文件中,在清单标记中添加以下行

android:sharedUserId="android.uid.system"
Run Code Online (Sandbox Code Playgroud)

您需要在代码中存在两个签名密钥,用于构建二进制文件.

platform.x509.pem

platform.pk8

存在于

安卓/编译/目标/产品/安全

从网上下载工具即

signapk.jar

从eclipse导出你的未签名的apk.通过右键单击android工具中的项目.保留文件夹中的所有内容,即键,unsigned apk和signapk.jar.运行以下命令

java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk
Run Code Online (Sandbox Code Playgroud)

unsigned apk是你的apk的名字,而signed apk是你想要的新名字.在此之后,只需使用命令在手机中安装已签名的应用程序

adb shell install signed.apk
Run Code Online (Sandbox Code Playgroud)

  • 如果您无法签出完整的Android源代码(例如,您在Windows上),您可以签出这个单一的存储库:git clone https://android.googlesource.com/platform/build.平台文件将在目标/产品/安全性下 (2认同)
  • 您好,我在签名时收到以下错误。请帮助 java.security.cert.CertificateException:无法解析证书:java.io.IO 异常:空输入 (2认同)

Jws*_*nic 1

从应用程序启用 wifi 的最佳方法是使用WifiManager

WifiManager wManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);

if(!wManager.isWifiEnabled() && wManager.getWifiState() != WifiManager.WIFI_STATE_ENABLING)
    wManager.setWifiEnabled(true);
Run Code Online (Sandbox Code Playgroud)

注意:您还必须将以下权限添加到清单中

<uses-permission android:name="android.permissions.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permissions.CHANGE_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)