編輯:關於Android編程
為了防止代碼被反編譯,因此需要加入混淆。混淆也可以通過第三方進行apk混淆,也可以用android中的proguard進行混淆。
混淆步驟:
1、配置混淆文件,名字可以隨意,在這裡使用proguard-android,格式為txt。
-optimizationpasses 5 # 指定代碼的壓縮級別 -dontusemixedcaseclassnames # 是否使用大小寫混合 -dontskipnonpubliclibraryclasses # 是否混淆第三方jar -dontpreverify # 混淆時是否做預校驗 -verbose # 混淆時是否記錄日志 -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 # 保持哪些類不被混淆 -libraryjars libs/gson-2.0.jar # 保持 第三方jar不被混淆 -keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native2、引入; } -keepclasseswithmembers class * { # 保持自定義控件類不被混淆 public (android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet, int); # 保持自定義控件類不被混淆 } -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 *; } -keepclassmembers class **.R$* { # 保持R文件不被混淆 public static ; } -keep class com.alipay.android.app.IAliPay{*;} # 保持某個接口或類不被混淆 -keep class com.android.app.view**{*;} # 保持某個包下所有的類不被混淆 -keep class com.android.app.CommonCallback{ # 保持某個類或接口的公有和保護類型的成員和方法不被混淆 public protected ; public protected ; } -keep class com.android.app.Platform$*{ # 保持內部類不被混淆 *; } #-keep class com.android.app.** implements com.android.app.Platform$ICallback {*;} # 保持內部接口不被混淆 -dontwarn android.support.**
在項目的project.properties文件中加入proguard.config=proguard-android.txt,就是上面寫的混淆文件。
3、android默認運行環境是debug模式,是不執行代碼混淆的。因此,必須對項目進行簽名才可以,如果在打包時遇到錯誤,可能是混淆文件哪裡寫的有問題。
在Android中listview是最常用的控件之一,但是有時候我們會覺得千篇一律的listview看起來過於單調,於是就產生了listView動畫,listview加載
這次要介紹一下對象池模式(Object Pool Pattern),這個模式為常見 23 種設計模式之外的設計模式,介紹的初衷主要是在平時的 android 開發中經常會
本文概述: 滑動解鎖九宮格的分析: 1、需要自定義控件; 2、需要重寫事件onTouchEvent(); 3、需要給九個點設置序號和坐標,這裡用Map類就行;
一、Android中的事件處理方法事件處理:響應用戶UI動作,提高應用程序交互性1、基於監聽的事件處理機制2、基於回調的事件處理機制3、Handler消息處理前面我們已經