研究了一下android的apk的簽名和代碼的混淆打包,如果不混淆打包,那麼apk可以直接被人反編譯出來查看源碼,混淆打包雖然還是能看懂,但是沒有那麼好懂了,至少要話費些時間
如果不混淆,反編譯後的代碼如下:
基本上就是源碼。
如果混淆後,反編譯後的代碼如下:<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140630/2014063013052323.jpg" alt="\">
代碼中出現很多的a、b、c之類的變數命名,所以要讀懂就具有一定的困難了!
下面先說一下apk的簽名:
1.apk簽名必須先弄一個key,如何產生key呢?那麼就要運用jdk來產生。
首先必須把jdk在系統內容變數中配置好。這個就不多說了,這是使用java就必須配置好的。
2.產生keystore
運行cmd,然後使用cd 進入 C:\Program Files\Java\jdk1.6.0_10\bin>(也就是你C盤的安裝jdk的位置)目錄下,然後輸入keytool -genkey -aliasandroid.keystore -keyalg RSA -validity 50000 -keystoreandroid.keystore
參數意義:-validity主要是認證的有效期間,寫50000天。
紅色的android字樣可以隨便改成自己的命名。
命令執行後會在C:\Program Files\Java\jdk1.6.0_10\bin>目錄下產生 android.keystore檔案。如:
弄到apk後就可以打包了,並且帶上自己的簽名。
在打包前我們需要加點東西來混淆代碼,是我們打包後再反編譯後無法正常查看代碼。
混淆代碼其實灰常簡單,在需要打包的項目下找到 project.properties這個檔案,開啟然後在最下面加上一句話就ok了,如:
低版本的adt不是這樣寫的,高版本就這樣寫就ok了,如果是低版本的話是寫成 proguard.config=proguard.cfg。不過現在一般都用不上了,都是搞版本的,在高版本中這樣寫就會在打包的最後步驟上報錯:報錯的大概內容是:
invalid proguard configuration file path c:.../proguard.cfg dose not exist or is not regular file
加完後就可以簽名打包apk了。
在Eclipse介面點擊 File-》Export...
然後就可以了!成功到處帶簽名的混淆代碼的apk。