关闭

给第三方apk进行系统签名的几种方式

标签: linuxandroidubuntuapk
13969人阅读 评论(0) 收藏 举报
分类:

----------------------------------------------------------------------------


此文章仅作为学习交流所用
转载或引用请务必注明原文地址:
http://blog.csdn.net/luzhenrong45/article/details/47733053
或联系作者:luzhenrong45@gmail.com
谢谢!   

----------------------------------------------------------------------------


注:本文假设你已经拥有Android系统源码,且对Android源码有一定认识。


工作中有时会遇到一些apk签名不同,导致无法安装的问题。
    场景一:

    有一个第三方apk(具有系统权限),无法安装在我们自己的Android机器上,提示以下错误,导致无法安装。

    


    这是由于该APK具有系统权限,而系统签名与我们的Android设备系统签名不一致。Android检测到系统签名不一致,由于安全因素考虑,就阻止安装了。   

    解决方法:使用自己的Android签名工具给apk重新签名

    (1) Android的签名文件存放于系统源码的 build/target/product/security/目录下

    
    该目录下有 media.pk8、media.x509.pem、platform.pk8、platform.x509.pem、shared.pk8、shared.x509.pem、testkey.pk8、testkey.x509.pem等签名文件,不同的签名文件,对应不同的权限。Android默认的签名文件为testkey.pk8、testkey.x509.pem。

    (2) Android自带的签名工具为 signapk.jar, 可以在源码编译目录out中找到,具体路径为:out/host/linux-x86/framework/signapk.jar    以上APK具有系统权限,重新签名应该使用platform签名文件进行签名。

    签名方法:将对应权限的签名文件platform.pk8、platform.x509.pem, 签名工具 signapk.jar, 以及需要签名的apk(假设 old.apk) 放到同一目录下,打开linux终端(windows cmd也可以),进入该目录,进行重新签名:

    java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk

    重新生成的new.apk就可以安装在我们的Android设备上了。

    

    场景二:具有apk源码,同样是具备系统权限的,当我们将apk源码导入Eclipse中,使用 Run as --> Android application 编译安装APK时, Eclise同样会提示场景一的错误信息,原因也是一样。我们同样可以将Eclipse生成的apk按照场景一的方法进行重新签名,再安装到我们的设备上。但是,有时可能我们会经常修改apk源码进行调试验证,如果每次都把apk拿出来进行重新签名,再安装,这样确实麻烦了一些。Eclipse是支持使用自己的系统签名工具进行APK打包签名的。使用这种方法,可以快速而方便地对APK进行系统签名,并将其安装到我们的Android设备上。下面说一下具体做法:


步骤一:同样取源码目录build\target\product\security 目录下的platform.pk8 platform.x509.pem放到某一个目录下


步骤二:进入该目录,生成shared.priv.pem

openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt


步骤三:生成pkcs12

openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name androiddebugkey

Enter Export Password:
Verifying - Enter Export Password:

这里会提示输入密码,默认密码是android,如是自己制作的key,输入对应的密码。

步骤四:生成debug.keystore,Eclipse需要使用该keystore.
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore debug.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey

步骤五:在Eclipse的  Windows/Preferences/Android/Build 中设置"Custom debug keystore"为刚才步骤四生成的debug.keystore即可直接run安装调试apk.这样的话,就可以不用再去用signapk.jar,如java -jar signapk.jar platform.x509.pem platform.pk8 *.apk **.apk进行签名了。





注:场景二其实也可以直接将APK源码放在Android系统源码的环境下用make来编译需要编写Android.mk,加入LOCAL_CERTIFICATE := platform

可以直接使用mm编译apk, 编译出来的APK同样可以顺利安装在我们自己的Android设备上。

一个简单的Android.mk(APK源码只包含java文件,不含JNI代码)文件可以参考以下写法,其中 XXX 修改为你的apk名字。


进入该源码目录,执行mm命令,即可在out/target/product/$PRODUCT_NAME/system/app目录下生成 xxx.apk



17
0
查看评论

APK签名工具简介

APK签名工具简介APK签名 需要使用以下几个工具: keytool jarsigner zipalign apksigner 其中apksigner和jarsigner作用类似,前者是谷歌官方提供的针对apk签名及验证的工具,功能更加强大。后者是java平台通用的jar包签名工具。在重签名时,选...
  • lamelias
  • lamelias
  • 2016-12-15 13:35
  • 1881

Android-APK签名工具-jarsigner和apksigner

一.工具介绍 jarsigner是JDK提供的针对jar包签名的通用工具, 位于JDK/bin/jarsigner.exe apksigner是Google官方提供的针对Android apk签名及验证的专用工具, 位于Android SDK/build-tools/SDK版本/apksigne...
  • qq_32115439
  • qq_32115439
  • 2017-02-17 19:14
  • 5420

android apk 签名工具 通过该工具可替换系统APK

  • 2010-06-21 22:16
  • 141KB
  • 下载

apk空包签名方法及工具

“空包签名”具体方法如下: 1、使用jarsigner签名: jarsigner -verbose -keystore 密钥库位置 -signedjar 签名后的apk 签名前的apk 别名 注意:给Liqu.apk签名密匙库文件及别名必须要验证的apk一致。否则会导致验证不能通过...
  • canglang_123
  • canglang_123
  • 2015-02-27 18:22
  • 3729

apk空包签名方法及工具

为了维护开发者的合法权益,平台在上传应用或者认领时,需进行签名验证,进而确定开发者真实身份。 【流程】:     先下载平台提供的空白签名包——>将空白包进行签名打包(须与所传应用签名文件一致)——>上传签名包。 【说明】:此操作需开发人员进行操作! “空包...
  • yangxi_001
  • yangxi_001
  • 2016-06-17 18:52
  • 6675

获取apk签名的工具

  • 2015-09-09 10:48
  • 8KB
  • 下载

手机APK签名工具

  • 2013-12-04 12:50
  • 1.66MB
  • 下载

微信签名工具 Gen_Signature_Android221cbf.apk 下载

百度键入”微信开放平台”或直接访问网址https://open.weixin.qq.com/按照下图找到签名工具即可 以上:签名工具申请完成 下面是给我小白自己看的: 已经在微信官网申请了账号了,想要在上面开发应用,必须首先对应用进行审核。在审核之前,需要填写应用的相关信息,包括名称、图标、用...
  • Drothy_qin
  • Drothy_qin
  • 2015-11-20 15:52
  • 13144

APK签名生成工具

  • 2016-12-04 16:46
  • 13KB
  • 下载

apk空包签名方法及工具

签名工具使用指导 一、准备工作:       1、下载加固后的应用安装包。请在“应用保护记录”页面,选择需您进行加固保护后要发布的应用,进行下载。         2、下载签名工具,并解...
  • qq_30889373
  • qq_30889373
  • 2017-07-07 22:40
  • 306
    个人资料
    • 访问:187276次
    • 积分:2379
    • 等级:
    • 排名:第18440名
    • 原创:60篇
    • 转载:4篇
    • 译文:0篇
    • 评论:70条
    最新评论