編輯:關於Android編程
對於使用簽名的apk,常用的反編譯之後還是能查看class文件的代碼實現,對於反編譯可查看個人的博客點擊打開鏈接
使用代碼混淆就能是這種常規反編譯失效
1,在build.grandle添加,其中規則寫在proguard-rules.pro中,也可以自定義一個文件,將其代替,比如eclipse常用的 proguard-project.txt
buildTypes { release { signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }2,在proguard-rules.pro中加入以下代碼,基本可以涵蓋所有
-optimizationpasses 5 # 指定代碼的壓縮級別 -dontusemixedcaseclassnames # 是否使用大小寫混合 -dontpreverify # 混淆時是否做預校驗 -verbose # 混淆時是否記錄日志 -dontwarn com.umeng.** #保持com.umeng.**這個包裡面的所有類和所有方法不被混淆。(沒有友盟的集成時刪除此句) -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆時所采用的算法 -keep public class * extends android.app.Activity # 保持哪些類不被混淆 -keep public class * extends android.app.Application # 保持哪些類不被混淆 -keep public class * extends android.app.Service # 保持哪些類不被混淆 -keep public class * extends android.content.BroadcastReceiver # 保持哪些類不被混淆 -keep public class * extends android.content.ContentProvider # 保持哪些類不被混淆 -keep public class * extends android.app.backup.BackupAgentHelper # 保持哪些類不被混淆 -keep public class * extends android.preference.Preference # 保持哪些類不被混淆 -keep public class com.android.vending.licensing.ILicensingService # 保持哪些類不被混淆 -keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native3,通過Android Studio進行混淆代碼時,默認已經將 lib目錄中的 jar 都已經添加到打包腳本中,所以不需要再次手動添加,否則會出現“ java.io.IOException: The same input jar is specified twice” 錯誤。; } -keepclasseswithmembers class * { # 保持自定義控件類不被混淆 public (android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { # 保持自定義控件類不被混淆 public}-keepclassmembers class * extends android.app.Activity { # 保持自定義控件類不被混淆 public void *(android.view.View);}-keepclassmembers enum * { # 保持枚舉 enum 類不被混淆 public static **[] values(); public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *;}(android.content.Context, android.util.AttributeSet, int);
4,打出帶簽名的apk進行反編譯,查看代碼,混淆後與混淆前圖如下
在聯系人,好友等列表中,為了能夠快速的根據名稱查找到相應的聯系人或者好友,通常會建立一個可以根據字母快速定位名稱的View。如下圖中右邊字母表所示:1.自定義View關於
1.到百度地圖頁面申請key,注意key和項目包名和數字簽名一一對應的。http://developer.baidu.com/map/index.php?title=%E
菜鳥起飛記android launchmode 使用場景Activity一共有以下四種launchMode:1.standard2.singleTop3.singleTa
android-async-http開源項目可以是我們輕松的獲取網絡數據或者向服務器發送數據,使用起來非常簡單,關於android-async-http開源項目的介紹內