Linux和WINDOWS下JAVA代碼實現,用命令行實現對apk包重新簽名打包優化

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 -storepass testpwd -signedjarD:\\test\\app_signer_tmp.apk D:\\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 4 D:\\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不存在的問題


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章