Android 工程混淆后无法找到自定义控件类的解决方案
Android 工程混淆后报出如下错误:
10-19 13:26:19.750: E/AndroidRuntime(13654): Caused by: android.view.InflateException: Binary XML file line #193: Error inflating
… …
E/AndroidRuntime(13480): Caused by: java.lang.ClassNotFoundException: com.neusof
t.neuapp.ui.AppPicsGallery in loader dalvik.system.PathClassLoader[/data/app/com
.neusoft.neuapp.ui-1.apk]
E/AndroidRuntime(13480): at dalvik.system.PathClassLoader.findClass(PathC
lassLoader.java:240)
E/AndroidRuntime(13480): at java.lang.ClassLoader.loadClass(ClassLoader.j
ava:551)
E/AndroidRuntime(13480): at java.lang.ClassLoader.loadClass(ClassLoader.j
ava:511)
E/AndroidRuntime(13480): at android.view.LayoutInflater.createView(Layout
Inflater.java:471)
E/AndroidRuntime(13480): at android.view.LayoutInflater.createViewFromTag
(LayoutInflater.java:570)
E/AndroidRuntime(13480): ... 24 more
在xml文件中自定义了下面一个插件:
对应的View实现定义如下:
解决方案:
android在用proguard混淆时,一般情况下使用系统自带的配置文件就可以保持大部分外部需要引用的类,比如Activity,view扩展等等,但是在本项目的proguard文件中没有保存AppPicsGallery所引用的Gallery类,所以要在proguard.cfg文件中加入
-keep public class * extends android.widget.Gallery{
public *;
}
另外,有些情况下一些引入的外部lib,如果被混淆也会出现各种各样的问题,如果不想混淆这些包,就要加上
-keep class packagename.** {*;}
这样就能完整保持原有class了。
更多相关文章
- Failed resolution of: Lcom/growingio/android/sdk/agent/VdsAg
- Android创建隐藏文件或者文件夹
- Android中的File文件存储及读取file中的Bitmap
- Android利用drawable文件夹自定义控件背景、样式
- 创建Android工程
- Android改变文件的权限
- 如何查看无法导出的android数据库文件?