如何使用系统签名对Android应用进行签名?

79

我已经下载并编译了带有signed-google_ion-ota-14721.zip镜像的 Android 2.1 版本,适用于我的 HTC 手机。编译成功,并且系统镜像已刷入。 如何使用系统签名对自己的 Android 应用程序进行签名?

由于我完全不了解签名过程,可以有人描述一下整个使用系统签名为用户应用程序进行签名的过程吗?

2个回答

124
最终我找到了一种方法来使用平台签名对我的应用进行签名。您需要使用位于<root-of-android-source-tree>/build/target/product/security/中的密钥,并在AndroidManifest.xml文件中添加android:sharedUserId="android.uid.system"
来自此Google Groups主题的详细信息:
在为Dream签署由自己生成的证书的同时,我还成功地使用平台证书对我的应用进行了签名,并使用系统共享用户ID运行了该应用程序。以下是我采取的步骤:
- 使用https://web.archive.org/web/20081211205758/http://source.android.com:80/documentation/building-for-dream构建并闪存自己的Android。在执行'make'之前,使用https://web.archive.org/web/20091213215940/http://pdk.android.com/online-pdk/guide/release_keys.html上的mkkey.sh脚本创建新的证书,包括x509证书。 - 在您的应用程序的AndroidManifest.xml中:在<manifest>元素下,添加属性android:sharedUserId="android.uid.system"。 - 使用Eclipse导出应用程序的未签名版本:右键单击项目>> Android工具>>导出未签名应用程序包。 - 使用<root-of-android-source-tree>/out/host/<your-host>/framework/signapk.jar使用先前在<root-of-android-source-tree>/build/target/product/security中生成的platform.x509.pemplatform.pk8来对您的应用进行签名:
java -jar signapk.jar platform.x509.pem platform.pk8 YourApp-unsigned.apk YourApp-signed.apk.
  • 将应用程序安装到您的设备:

  • adb install YourApp-signed.apk
    
  • 运行您的应用程序
  • 使用adb shell ps确认您的应用程序正在以系统身份运行。

  • 1
    但是/build/target/product/security/ 这个路径在哪里可以找到? - Ahmed
    2
    @user1155908:它在Android操作系统源代码中。您需要下载Android开放源代码项目(AOSP):http://source.android.com/source/downloading.html - m-ric
    1
    @pablisco 密码是“android”。另外,参见这个答案,了解签署APK的其他方法。 - Lekensteyn
    2
    这个方法还有效吗?发布密钥链接似乎已经失效了! - code2be
    2
    大家好,我已经使用Android源代码中的证书对我的应用程序进行了签名。但是我在源代码中没有找到SignApk.jar文件。因此,我从git上显式下载并签署了我的Apk。但是,在安装应用程序时,我遇到了这个错误:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE。有人可以帮忙吗?谢谢。 - Juhi Matta
    显示剩余10条评论

    10

    这个过程很好,我已经尝试过了。 只要在签名后不要忘记运行zipalign,因为签名过程会使APK未对齐,导致其无法安装。您需要安装已对齐的APK。

    zipalign -fv 4 YourApplication-signed.apk YourApplication-aligned.apk
    

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