Android 4.0 以後代碼混淆及簽名

Android 4.0要用ProGuard比2.3更簡單:在Eclipse中打開工程目錄下的project.properties文件,該文件中有以下兩行:

To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
5217195ecb469.png
根據這段說明,只要將proguard.config前面的#去掉,就可以利用ProGuard來混淆代碼了!當然,默認的設置是不帶優化功能的,可以用以下設置來加上代碼優化功能(上圖藍色文字部分):

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt

接下來就是生成Apk了。這裏需要注意的是,如果你用Eclipse裏的Run或Build Project/Build All來生成Apk,是不會混淆代碼的!在Eclipse的Package Explorer裏選中工程的根結點,在右鍵菜單裏找到Android Tools,如下圖所示,其下有兩個子菜單項:“Export Signed Application Package...”和“Export Unsigned Application Package...”,一個是帶RSA數字簽名,一個是不帶數字簽名,根據需要選一個,然後按照嚮導操作即可,最終生成的Apk就是混淆過代碼的了!查看效果可以用7z等壓縮程序(Ubuntu中直接用歸檔管理器)打開,將其中的classes.dex解壓,用dex2jar轉成jar格式後,再用Java反編碼工具打開,就會看到代碼的混淆效果。

2.png
自己在測試的時候是使用了 沒有簽名的,選擇的是Export Unsigned Application Package。
如果使用Export Signed Application Package 打包APK ,關於簽名的學習,下面繼續介紹......
注意:同時在進行混淆的同時可以自己寫一些規則,在工程的 proguard-project.txt 文件中寫例如:
1、
-libraryjars libs/android-support-v4.jar

-libraryjars libs 
就是加載第三方Jar包
2、

-ignorewarnings

是去除代碼中的警告
3、

-keep class com.alibaba.fastjson.**

-keep 保留不希望混淆的類
4、
-keep class com.msd.followme.Render{
public *;
}
此類的公共方法保留,不混淆。
簽名的學習:
爲什麼要簽名?

開發Android的人這麼多,完全有可能大家都把類名,包名起成了一個同樣的名字,這時候如何區分?簽名這時候就是起區分作用的。

由於開發商可能通過使用相同的Package Name來混淆替換已經安裝的程序,簽名可以保證相當名字,但是簽名不同的包不被替換。

APK如果使用一個key簽名,發佈時另一個key簽名的文件將無法安裝或覆蓋老的版本,這樣可以防止你已安裝的應用被惡意的第三方覆蓋或替換掉。

這樣簽名其實也是開發者的身份標識。交易中抵賴等事情發生時,簽名可以防止抵賴的發生。

簽名的注意事項

所有的Android應用都必須有數字簽名,沒有不存在數字簽名的應用,包括模擬器上運行的。Android系統不會安裝沒有數字證書的應用。

簽名的數字證書不需要權威機構來認證,是開發者自己產生的數字證書,即所謂的自簽名。

模擬器開發環境,開發時通過ADB接口上傳的程序會先自動被簽有Debug權限,然後才傳遞到模擬器。如下圖所示,Eclipse菜單的Window -> Preferences -> Android –> Build 下顯示的是我們默認的調試用的簽名數字證書。
3.png
正式發佈一個Android應用時,必須使用一個合適的私鑰生成的數字證書來給程序簽名,不能使用ADT插件或者ANT工具生成的調試證書來發布。

數字證書都是有有效期的,Android只是在應用程序安裝的時候纔會檢查證書的有效期。如果程序已經安裝在系統中,即使證書過期也不會影響程序的正常功能。

簽名後需使用zipalign優化程序。

Android將數字證書用來標識應用程序的作者和在應用程序之間建立信任關係,而不是用來決定最終用戶可以安裝哪些應用程序。

簽名的方法

方法一、使用Eclipse工具

此方法適用於Android1.5及以上版本。

步驟一:打開Eclipse->選擇你要簽名的項目->右擊->android tools->Export signed Application package

4.png
步驟二,在出現的窗口確認是不是這個項目要簽名,然後選擇下一步:

5.png
步驟三:在Export Android Application 這一步,如果我們之前已有有了 keystore, 選擇我們之前已有的,否則我們新建一個。

如下,選擇需要保存這個證書文件的目錄,以及這個證書文件的一個密碼。

6.png
步驟四,點擊下一步後,我們需要填寫keystore的基本信息,如,別名,密碼,有效期,姓名,組織,組織名稱,所在城市,所在省份,國家等,點擊Next

7.png
步驟五、選擇被簽名後的APK保存位置。點擊finish。注意是選擇最終將產生的文件。

8.png
之後我們在剛纔選擇的目錄下就可以看到生成的簽名後的APK文件。

以上是一種比較簡單的簽名方式,一般情況下 使用這種簽名方式就可以了....下面的鏈接還有一種方式是利用JDK自帶的工具進行簽名,鏈接如下:

http://www.cnblogs.com/ghj1976/archive/2011/07/18/2109381.html

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