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


 

3就是使用自動簽名工具了, 比如androidresedit , 原理其實就是上述的第二條,只是自動化了一下。 當然簽名目錄中證書什麼是可以換的  


最終這3中方法都是可以生成簽過名的apk的 ,當然 大牛看看就行,不要吐槽我們這些菜逼。。。

END 


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