android 混淆后,反射R文件内部类报错
来源:互联网 发布:电脑网络适配怎么修复 编辑:程序博客网 时间:2024/06/05 10:02
项目中由于用到了下面方法来 反射R文件获取layout的布局id。但是混淆后,发现报错 android.content.res.Resources$NotFoundException: Resource ID #0x0
经过网上查找都是在 proguard-rules.pro 中加 -keep class *.R$ {*;} ,但是没有彻底解决,最后加上
-keepattributes InnerClasses 就可以了
public int getIdByName(Context context, String className, String name) { String packageName = context.getPackageName(); Class r = null; int id = 0; try { r = Class.forName(packageName + ".R"); Class[] classes = r.getClasses(); Class desireClass = null; for (int i = 0; i < classes.length; ++i) { if (classes[i].getName().split("\\$")[1].equals(className)) { desireClass = classes[i]; break; } } if (desireClass != null) { id = desireClass.getField(name).getInt(desireClass); } } catch (Exception e) { e.printStackTrace(); } return id; }
最终解决办法:
在proguard-rules.pro 中加上
-keep class *.R$ {*;}
-keepattributes InnerClasses
备注:
如果项目中用泛型,混淆后报错
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType,可以加上
-keepattributes Signature (避免混淆泛型)
阅读全文
0 0
- android 混淆后,反射R文件内部类报错
- android studio 混淆后,打包报错!!!
- android 代码混淆排除指定内部类
- 反射android R文件
- Android代码混淆,如何过滤掉反射的R文件及第三方包?
- 混淆后运行报错
- android反射方式访问内部类成员
- android反射方式访问内部类成员 .
- Android点滴---drawable粘贴图片后 R文件报错,解决
- Android点滴---drawable粘贴图片后 R文件报错,解决
- Android项目R文件丢失报错
- Android studio R文件报错
- Android R文件报错问题
- android studio R文件报错解决办法
- android开发之R文件报错
- Android studio R文件报错解决
- android studio R文件报错
- android studio R文件报错
- vue-devtools chrome 开发工具安装
- JAVA方法参数
- 延迟加载(Lazyload)三种实现方式
- 九种基本数据类型的大小,以及他们的封装类。
- golang进阶(五)——restful开发的json处理
- android 混淆后,反射R文件内部类报错
- SpringBoot源码研究之Start
- leetcode_11_Container With Most Water
- 冒泡排序
- Angular4-在线竞拍应用-项目启动过程
- Three.js实现的网站页面金字塔模型显示
- Java中POI操作Excel常用方法
- 深度解读互联网+供应链金融八大模式
- PAT考试乙级1011(C语言实现)