android 打包和签名 大致流程


首先是解包  
注意 这里必须将cmd 的当前位置改到apktool 目录下, 不然就会报错说找不到 aapt.exe  , 当然也可以加入到系统path中


apktool d .apk folder 

 这步之后就是修改smali 代码或者是.so文件了
 改好之后使用


apktool b folder   

 然后folder 文件里就会出现一个apk  
之后就是签名问题了
签名有3条路走, 一条是使用jdk , 一条是使用android的signapk ,还有就是集成工具


1  创建key,需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk1.6.0_24\bin目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入


D:\>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
/*说明:-genkey 产生密钥
        -alias demo.keystore 别名 demo.keystore
        -keyalg RSA 使用RSA算法对签名加密
        -validity 40000 有效期限4000天
        -keystore demo.keystore */
D:\>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*说明:-verbose 输出签名的详细信息
        -keystore  demo.keystore 密钥库位置
        -signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.*/

  注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名。

引用  http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html

另外自己在操作过程中遇到一个问题,还有解决方法 :

      keytool 错误: java.io.FileNotFoundException: android.keystore (拒绝访问。)

主要原因是JDK安装在C盘,没有写权限,所以报错

可以更改目录解决 改为如下

C:\Program Files\Java\jdk1.7.0_65\bin>keytool -genkey -alias andro
eyalg RSA -validity 30000 -keystore D:/keyStore/android.keystore

放在D盘,完美解决


2  android 源码自带的signapk工具  需要用到证书

    1.进入<Android_Source_Path>/build/target/product/security,找到【platform.pk8】和【platform.x509.pem】系统密钥。

    2.进入<Android_Source_Path>/build/tools/signapk找到SignApk.java,运行javac编译成SignApk.class

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


 

3就是使用自动签名工具了, 比如androidresedit , 原理其实就是上述的第二条,只是自动化了一下。 当然签名目录中证书什么是可以换的  


最终这3中方法都是可以生成签过名的apk的 ,当然 大牛看看就行,不要吐槽我们这些菜逼。。。

END 


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值