Linux和WINDOWS下JAVA代码实现,用命令行实现对apk包重新签名打包优化

来源:互联网 发布:淘宝客服操作流程 编辑:程序博客网 时间:2024/06/07 09:47

1.7zip-解压到文件名命名的文件下,并删掉该apk文件

遇到的问题:无


2.判断是否为白包,如果已签名则删掉META—INF文件夹文件夹下的所有文件

遇到的问题:在删除的时候要注意要删除META—INF文件夹和文件夹下所有的文件


3.7zip-压缩该文件

遇到的问题:在压缩文件时,要注意选取解压的apk包里的所有文件,并在压缩时文件夹不能包含两层

eg.  test.apk >> 解压的文件夹test >> 压缩 >> test.apk  而不是 test/test套两层,一定注意


4.重新定义打包的文件路径和文件名(如需更改文件路径和文件名的情况)

遇到的问题:无


5.调用命令生成临时文件

   1).WINDOWS下   

    cmd.exe /C  jarsigner -verbose -keystoretest -storepasstestpwd -signedjarD:\\test\\app_signer_tmp.apkD:\\test\\test.apk test.key

   参数说明

    test   签名KEY

    testpwd   签名密码

    D:\\test\\app_signer_tmp.apk   签名后生成的临时文件的全路径

    D:\\test\\test.apk     原始APK文件全路径

    test.key  签名key文件路径,一般默认在当前目录下

遇到的问题:无

  2).LINUX下

   String createTemp = " jarsigner -verbose -keystore test -storepass testpwd -signedjar/root/test/app_signer_tmp.apk /root/test/test.apk test.key“

   String[] linux = new String[] {"/bin/bash", "-c",createTemp};
   exec("commands", linux); 

遇到的问题:无


6.zipalign优化

  1).WINDOWS下   

   cmd.exe /Cd:\\tools\\zipalign\\zipalign.exe -f -v 4D:\\test\\app_signer_tmp.apk D:\\test\\test_signer.apk

  d:\\tools\\zipalign\\zipalign.exe   zipalign.exe优化工具windows下的

  D:\\test\\app_signer_tmp.apk 在第五步中生成的临时文件

  D:\\test\\test_signer.apk 经过zipalign优化的正式包

遇到的问题:无

 2).LINUX下

 zipalign -f -v 4 /root/test/app_signer_tmp.apk /root/test_signer.apk

 zipalign linux下zipalign工具

 /root/test/app_signer_tmp.apk 第5步中生成的临时文件

 /root/test_signer.apk 打包最终输出的文件

遇到的问题:

在linux下运行打包的过程中遇到过一个比较坑的问题,zipalign 无法在linux上运行

[root@dev-web-test01 work]# zipalign
-bash: zipalign: command not found

---------下载linux zipalign文件 注意根据服务器的系统位数区分32 or 64

[root@dev-web-test01 test]# ./zipalign 
-bash: ./zipalign: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

需要安装如下库: 
yum -y install glibc.i686 
yum install libstdc++.i686 
yum install zlib.i686

error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory 

检查/usr/lib下是否存在

libz.so
libz.so.1
libz.so.1.y.z文件  

我这里不存在,我的解决办法是到其他服务器的/usr/lib/ 下去拷贝了这三个文件,然后运行./zipalign运行通过,问题解决


7.删除未签名的压缩文件包


8.删除签名的临时文件


9.删除解压的文件夹


----完成APK文件的重新签名并打包

补需要的资源:

1.zipalign工具   

http://download.csdn.net/detail/hwhanwan/9456605

2.libz.so.1

http://download.csdn.net/detail/hwhanwan/9456615

这里特别感谢

http://blog.csdn.net/keysilence1/article/details/50769844  给了zipalign解决问题的思路

http://www.bkjia.com/Androidjc/882022.html   解决libz.so.1不存在的问题


1 0
原创粉丝点击