首先是解包
注意 這裏必須將cmd 的當前位置改到apktool 目錄下, 不然就會報錯說找不到 aapt.exe , 當然也可以加入到系統path中
apktool d .apk folder
這步之後就是修改smali 代碼或者是.so文件了
改好之後使用
apktool b folder
然後folder 文件裏就會出現一個apk
之後就是簽名問題了
簽名有3條路走, 一條是使用jdk , 一條是使用android的signapk ,還有就是集成工具
1 創建key,需要用到keytool.exe (位於jdk1.6.0_24\jre\bin目錄下),使用產生的key對apk簽名用到的是jarsigner.exe (位於jdk1.6.0_24\bin目錄下),把上兩個軟件所在的目錄添加到環境變量path後,打開cmd輸入
D:\>keytool
-genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore /*說明:-genkey
產生密鑰 -alias
demo.keystore 別名 demo.keystore -keyalg
RSA 使用RSA算法對簽名加密 -validity
40000 有效期限4000天 -keystore
demo.keystore */ D:\>jarsigner
-verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore /*說明:-verbose
輸出簽名的詳細信息 -keystore
demo.keystore 密鑰庫位置 -signedjar
demor_signed.apk demo.apk demo.keystore 正式簽名,三個參數中依次爲簽名後產生的文件demo_signed,要簽名的文件demo.apk和密鑰庫demo.keystore.*/ |
注意事項:android工程的bin目錄下的demo.apk默認是已經使用debug用戶簽名的,所以不能使用上述步驟對此文件再次簽名。正確步驟應該是:在工程點擊右鍵->Anroid Tools-Export Unsigned Application Package導出的apk採用上述步驟簽名。
引用 http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html
另外自己在操作過程中遇到一個問題,還有解決方法 :
keytool 錯誤: java.io.FileNotFoundException: android.keystore (拒絕訪問。)
主要原因是JDK安裝在C盤,沒有寫權限,所以報錯
可以更改目錄解決 改爲如下
C:\Program Files\Java\jdk1.7.0_65\bin>keytool -genkey -alias andro
eyalg RSA -validity 30000 -keystore D:/keyStore/android.keystore
放在D盤,完美解決
2 android 源碼自帶的signapk工具 需要用到證書
1.進入<Android_Source_Path>/build/target/product/security,找到【platform.pk8】和【platform.x509.pem】系統密鑰。
2.進入<Android_Source_Path>/build/tools/signapk找到SignApk.java,運行javac編譯成SignApk.class
3.執行命令java com.android.signapk.SignApk platform.x509.pem platform.pk8 input.apk output.apk
3就是使用自動簽名工具了, 比如androidresedit , 原理其實就是上述的第二條,只是自動化了一下。 當然簽名目錄中證書什麼是可以換的
最終這3中方法都是可以生成簽過名的apk的 ,當然 大牛看看就行,不要吐槽我們這些菜逼。。。
END