[Android]使用platform密钥来给apk文件签名的命令

1.使用platform密钥对apk进行签名

 

1.1.进入<Android_Source_Path>/build/target/product/security,找到【platform.pk8】和【platform.x509.pem】系统密钥。
1.2.进入<Android_Source_Path>/build/tools/signapk找到SignApk.java,运行javac编译成SignApk.class
1.3.执行命令java com.android.signapk.SignApk platform.x509.pem platform.pk8 input.apk output.apk

至此,完成。

 

2. 对1的补充:

<Android_Source_Path>/build/target/product/security下有多对密钥,详细如下:

The following commands were used to generate the test key pairs:

  development/tools/make_key testkey  '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
  development/tools/make_key platform '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
  development/tools/make_key shared   '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
  development/tools/make_key media    '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'

The following standard test keys are currently included:

testkey -- a generic key for packages that do not otherwise specify a key.
platform -- a test key for packages that are part of the core platform.
shared -- a test key for things that are shared in the home/contacts process.
media -- a test key for packages that are part of the media/download system.

These test keys are used strictly in development, and should never be assumed
to convey any sort of validity.  When $BUILD_SECURE=true, the code should not
honor these keys in any context.


signing using the openssl commandline (for boot/system images)
--------------------------------------------------------------

1. convert pk8 format key to pem format
   % openssl pkcs8 -inform DER -nocrypt -in testkey.pk8 -out testkey.pem

2. create a signature using the pem format key
   % openssl dgst -binary -sha1 -sign testkey.pem FILE > FILE.sig

extracting public keys for embedding
------------------------------------
it's a Java tool
but it generates C code
take a look at commands/recovery/Android.mk
you'll see it running $(HOST_OUT_JAVA_LIBRARIES)/dumpkey.jar

 

 

3.对3的补充:

在运行第三步的命令前,请在你当前的工作目录下新建如下结构的文件夹:com.android.signapk,然后将第二步编译生成的SignApk放入该目录下。或者也可以将SignApk.java的package声明删除后再运行javac编译。

 

命令java com.android.signapk.SignApk platform.x509.pem platform.pk8 input.apk output.apk

不单可以对apk文件进行重签名,也可以对所有的zip文件进行重签名,包括ROM文件。

 

 

本文内容归CSDN博客博主Sodino 所有

转载请注明出处: http://blog.csdn.net/sodino/archive/2010/11/17/6016706.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Android Studio编译APK后,生成的APK文件并不具备系统签名,无法直接安装到手机上。因此,我们需要对APK进行系统签名。有两种常用的签名方法: 方法一是使用编译的signapk.jar进行签名,这个工具可以在编译的目录中找到,具体路径是out/host/linux-x86/framework/signapk.jar。你需要将APK文件签名工具signapk.jar、以及对应的签名文件platform.pk8和platform.x509.pem放置在同一个目录下。然后,在终端或命令行中,进入该目录,并执行以下命令进行重新签名: ``` java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk ``` 这样,就会生成一个新的APK文件new.apk,它已经使用platform签名文件进行了系统签名。 方法二是使用自己的Android签名工具对APK进行签名。你可以在系统源码的build/target/product/security/目录下找到Android签名文件。同样,你需要将APK文件签名工具和对应的签名文件放置在同一个目录下。然后,打开终端或命令行,并进入该目录,执行你自己的签名工具对APK进行签名。具体的签名方法可能因为不同的签名工具而有所不同,你可以参考网上的资料来进行操作。 总结来说,对于在Android Studio编译的APK进行系统签名,你可以选择使用编译的signapk.jar工具进行签名,或者使用自己的Android签名工具。在执行签名操作之前,确保将APK文件签名工具和对应的签名文件放置在同一个目录下,并按照相应的方法进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [android studio开发系统应用签名处理](https://download.csdn.net/download/weixin_38741759/14017935)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Android studio打包APK流程及给APK系统签名步骤](https://blog.csdn.net/IT_xiao_bai0516/article/details/120789218)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值