由於基本上 Android 的 .apk 檔是 .zip 的格式,所以我們也不用什麼特殊的工具即可去增刪裡面的檔案,只要用常用的 7-zip 或 WinRAR ......等工具即可。真的那麼簡單嗎?沒錯!就是這麼簡單!不過,要注意的是,Android 為了確認軟體是原作者所放出來的,apk 檔會以金鑰來「簽署」(相關內容可以用 Keytool 和 jarsigner 的關鍵字去查詢),因此,被我們改過的 apk 如果沒有重新簽署過,就無法安裝到 Android 中,這個我是試過才知道會有問題的。本來還以為原來的構想行不通了,幸好,有比較簡單的方法可以解決,我們只要把更動過的 apk 檔以 SignApk.jar 重新「簽署」過即可安裝到 Android 中了。
準備工作
- 下載 SignApk.zip ,下載後的檔案先以解壓縮工具解壓縮,可以儲存到自訂的位置。
- 安裝 JAVA ,由於我們用來簽署 apk 的工具是 JAVA 的程式,如果電腦中沒有,就要先去 http://java.com 下載並安裝。
- 準備個人金鑰,如果嫌麻煩,在 SignApk.zip 中有別人製作好的。如果自己製作的,就將簽署用的 certificate.pem 和個人金鑰 key.pk8 兩個檔案放到 SignApk 的目錄中,將原來的兩個舊檔案覆蓋即可。
操作程序
如果前面的準備工作都做好了,為了讓大部份的人都可以方便使用,不用記很長的命令,我把簽署的指令寫到了 SignApk 目錄中的「auto_signapk.bat」,這樣,只要把想重新簽署的 apk 檔利用滑鼠〔拖曳〕,並〔對準 auto_signapk.bat〕後放開,即會自動在 apk 原來目錄中產生一個重新簽署過的 xxx-new.apk 。
以 7-zip 更新了 swfLoader.apk 中 assets 目錄裡的 index.txt 後存檔 |
在 SignApk 目錄中有一個 auto_singapk.bat |
把要重新簽署的 swfLoader.apk 拖曳並對準 auto_signapk.bat 後放開 |
在 apk 原來的目錄中多了一個 swfLoader-new.apk 的檔案 |
舊版的和新版的可能因為電子簽章不同而無法安裝 |
由 [管理應用程式] 中 [解除安裝] 舊的 apk |
檔案下載
- 我加了 auto_signapk.bat 的 SignApk.zip (@GDrive) (2012.02.13 更新)
相關連結
更新紀錄
- 2012.02.13 SignApk.zip 裡的 auto_singapk.bat 更新了一下,解決它在中文或帶有空格的路徑會執行失敗的問題。
腳本寫的有點亂啊...這樣寫比較快吧
回覆刪除@echo off
cd /d %~dp0
set apkf=%1
if ^%apkf:~-1% == ^" goto Quote
java -jar signapk.jar certificate.pem key.pk8 %1 %apkf:~0,-4%_Sign.apk
exit
:Quote
java -jar signapk.jar certificate.pem key.pk8 %1 "%apkf:~1,-5%_Sign.apk"
呵〜莫嫌腳本寫得爛!
刪除哈!在下非資訊本科系,寫寫東西純屬興趣,寫得爛,正常啊!
不過,還是謝謝指教。
抱歉 我簽署後一樣 剖析問題
刪除抱歉 我簽署後一樣 剖析問題
刪除