編輯:關於Android編程
安卓代碼混淆時經常會出現各種問題,下面羅列一些注意事項
1.依賴的工程中使用的jar包若和工程自身中的jar包一樣的話,直接刪除依賴工程中相同的jar包即可
2.native方法要阻止混淆
例:
# natvie 方法不混淆
-keepclasseswithmembernames class * {
native ;
}
3.若自定義基類Activity中有根據名稱為控件注入值的要采用如下方法阻止字段被混消
如 基類Activity中有如下控件注入方法
protected void smartInject() {
Class clz=getClass();
Field[] fs=clz.getDeclaredFields();
Resources res = getResources();
String packageName = getPackageName();
for (Field field : fs) {
if (!View.class.isAssignableFrom(field.getType())) {
continue;
}
int viewId = res.getIdentifier(field.getName(), id, packageName);
if (viewId==0)
continue;
field.setAccessible(true);
try {
View v=findViewById(viewId);
field.set(this,v);
Class c=field.getType();
Method m=c.getMethod(setOnClickListener, android.view.View.OnClickListener.class);
m.invoke(v, this);
} catch (Throwable e) {
// e.printStackTrace();
}
field.setAccessible(false);
}
}
-keep class 應用包名.R$id{*;}
-keep public class * extends 包名.基類Activity {
;
}
3.常見的一些阻止代碼混淆的寫法
-keep class com.iflytek.**{*;}
-libraryjars libs/BaiduLBS_Android.jar
-libraryjars libs/fastjson-1.1.39.jar
-libraryjars libs/bcprov-jdk15-143.jar
-libraryjars libs/android-support-v4.jar
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}
-keep class okio.** {*;}
-dontwarn okio.**
-dontwarn com.alibaba.**
-dontwarn org.bouncycastle.**
-keepattributes Signature
-keepattributes *Annotation*
Android開發之Activity詳解
【Activity】 一個Activity是一個應用程序組件,提供一個屏幕,用戶可以用來交互為了完成某項任務,例如撥號、拍照、發送email、看地圖。每一個activi
Android 新手引導蒙層效果實現代碼示例
先上效果圖:這個效果一開始我是想直接讓UI給個切圖,後來發現這樣不行,適配很差,達不到效果。所以就自己動手寫代碼,其實思路也很簡單:在這個布局的父布局上面再手動添加一個v
Android RecyclerView藝術般的控件使用完全解析
RecyclerView出現已經有一段時間了,相信大家肯定不陌生了,大家可以通過導入support-v7對其進行使用。 據官方的介紹,該控件用於在有限的窗口中展示大量數據
華為p9怎麼隱藏導航欄
華為p9怎麼隱藏導航欄?華為p9隱藏導航欄方法是什麼?華為p9是華為今年推出的一款高端機,華為p9有許多方便好用的功能,比如你可以隱藏手機導航欄,那麼華為p