如何使用系统签名密钥签署我的申请?

我需要创build一个Robotium应用程序,使用设置应用程序来打开/closuresWIFI从菜单设置 – >无线和networking – > Wi-Fi。 我设法在这里find一些示例代码,演示如何通过只有apk文件来启动应用程序。 问题是我的Robotium应用程序应该与(系统)设置应用程序具有相同的签名。 试图运行应用程序时,我收到错误消息:

testing运行失败:Permission Denial:启动工具ComponentInfo {com.jayway.test / android.test.InstrumentationTestRunner} from pid = 354,uid = 354不允许,因为com.jayway.test包没有与目标com匹配的签名。 android.settings

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

Solutions Collecting From Web of "如何使用系统签名密钥签署我的申请?"

我有同样的问题..有一些权限,只有系统应用程序被允许有。 我试图从我的应用程序访问权限为android.permission.DUMPadb shell dumpsys命令。

解决scheme是…

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

 android:sharedUserId="android.uid.system" 

您需要在用于构build二进制文件的代码中存在两个签名密钥。

platform.x509.pem

platform.pk8

那是存在的

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

从网上下载工具即

signapk.jar

从eclipse导出未签名的apk。 通过右键单击从Android工具的项目。 保存所有的东西,如密钥,未签名的apk和signapk.jar在一个文件夹中。 运行以下命令

 java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk 

未签名的apk是你的apk的名字,签名的apk是你想要的新名字。 之后,只需使用该命令在手机中安装已签名的应用程序即可

 adb shell install signed.apk 

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

 WifiManager wManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); if(!wManager.isWifiEnabled() && wManager.getWifiState() != WifiManager.WIFI_STATE_ENABLING) wManager.setWifiEnabled(true); 

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

 <uses-permission android:name="android.permissions.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permissions.CHANGE_WIFI_STATE" />