標籤:android 簽名 打包
首先是解包
注意 這裡必須將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
來源: <http://www.jb51.net/article/50847.htm>
3就是使用自動簽名工具了, 比如androidresedit , 原理其實就是上述的第二條,只是自動化了一下。 當然簽名目錄中認證什麼是可以換的
最終這3中方法都是可以產生簽過名的apk的 ,當然 大牛看看就行,不要吐槽我們這些菜逼。。。
END
android 打包和簽名 大致流程