利用标准的java工具keytool.exe(位于jdk\jre\bin目录下)创建key,利用jarsigner.exe工具使用生成的key来生成证书和给程序签名(位于jdk\bin目录下)。 Win +R 运行cmd,进入目录D:\temp(注:使用该目录为示例工作目录) a)、创建可以,运行如下命令 keytool -genkey -alias demo.keystore -keyalg RSA -validity 20000 -keystore demo.keystore /*说明:keytool工具是Java JDK自带的证书工具 -genkey参数表示:要生成一个证书(版权、身份识别的安全证书) -alias参数表示:证书有别名,-alias demo.keystore表示证书别名为:demo -keyalg RSA表示加密类型,RSA表示需要加密,以防止别人盗取 -validity 20000表示有效时间20000天( K3 -keystore demo.keystore表示要生成的证书名称为demo */ b)、删除之前的签名文件 用解压缩工具解打开apk文件(如:更改a.apk 为a.zip,便可用压缩工具打开,并找到下面的目录META-INF下的 CERT.RSA和CERT.SF文件,并删除该文件。删除后,再次更改后缀名为.apk ; 注: META-INF目录:存放签名后的CERT和MANIFEST文件,用于识别软件的签名及版权。 Rres目录:存放各种Android原始资源,包括:动画anim、图片drawable、布局layout、menu菜单、xml等等 AndroidManifest.xml编码后的Android项目描述文件,包括了Android项目的名称、版本、权限、程序组件描述等等 aclasses.dex编译后Class被dx程序转换成Dalvik虚拟机的可执行字节码文件 qresources.arsc所有文本资源的编译产物,里面包含了各Location对应的字符串资源。 c)、使用生成的key对apk签名,运行如下命令: jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore /*说明:jarsigner是Java的签名工具 -verbose参数表示:显示出签名详细信息 -keystore表示:使用当前目录中的demo.keystore签名证书文件。 -signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore. */ (注:查看某个apk是否经过了签名方法,jarsigner –verify demo.apk。优化:签名后需要做对齐优化处理zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk ) 将apk文件复制到signapk.jar的同文件夹里,执行java –jar signapk.jar platform.x509.pem platform.pk8 test.apk test_new.apk
|
|