樂固加固后windows下實現給apk簽名


         遇到了這樣一個問題:我們已經在centos下簽名生成好的apk,拿到騰訊樂固上加固以后,簽名沒有了,就需要重新簽名,我樂滋滋的想,既然原來是在centos下簽名的,那再去centos上簽名一次就好了,可以並沒有那么簡單,一直報錯jarsigner不能打開我的apk,如下:

jarsigner: unable to open jar file: my.apk

         后面想了下,我之前的簽名是先使用apktool.jar反編譯apk,刪除里面的META-INF文件夾,然后再編譯生成新的apk,然后才簽名的,我也嘗試了這種方式,發現報錯,反編譯失敗,查了資料,發現騰訊樂固加固有一項就是為了防止apk反編譯的,所以我反編譯失敗是解釋的通的。

   覺得centos不行,那我再windows下試試,同樣的簽名命令,windows下在git bash下可以!!!   目前不清楚為啥,不知道是不是不同系統的jdk不一樣。

 

 在ftp上我們指定了路徑給簽名apk使用,比如是\\192.168.1.3\ftp\sign_apk

用到了兩個腳本,一個bat,一個shell,所以需要在windows上安裝下git bash,話不多說,直接看下腳本,

bat腳本:sign_apk.bat

@echo on
setlocal ENABLEDELAYEDEXPANSION
set apk_path="\\192.168.1.3\ftp\sign_apk"
set local_sign_path=C:\build_bat\sign_apk
::當前路徑
set cur_path=%cd%
::復制key文件
echo cur_path=%cur_path% and ftp_path=%apk_path%
copy %local_sign_path%\mirror_aw.key .\
xcopy %apk_path%\* .\
md target
::查找當前目錄下的所有apk文件,並調用shell腳本簽名
for /F %%h in ( 'dir /B %cur_path%\ ^|findstr ".apk" ' ) do (

set apk_name=%%h
echo apk_name=!apk_name!
call %local_sign_path%\sign_tool.sh !apk_name!
)
::等shell執行結束后,將簽名后的apk回收到ftp上
ping 127.0.0.1
xcopy target\* %apk_path%

 

shell腳本:sign_tool.sh

#!/bin/bash
echo ==========sign $apk_name=====================
time_now=`date "+%Y%m%d%H%M"`
jarsigner -verbose -digestalg SHA1 -sigalg SHA1withRSA -keystore mirror.key -signedjar target/"$time_now"_signed_"$apk_name" $apk_name $key_alise -storepass $passwd

 

兩個腳本放在同一個目錄下,同級目錄下還有個key文件,加密時使用

最后直接執行bat腳本就可以了,執行結束后,會在你的ftp路徑下看到以“時間_signed”標志開始的apk,就是已經簽名了的apk

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM