android混淆后出错:资源文件找不到,求解

无量劫 2016-08-30 10:54:59
我做一个项目,项目中有调用第三方jar包,jar包中通过反射获得R文件中的资源,项目混淆后,出现Resources$NotFoundException(resource not found)资源没有找到这个错误,但是我在项目的proguard-project.txt文件中添加了 -keep class **.R$* { *; }这句。不混淆的话一切正常,这个什么原因?求解,谢谢!

错误logo:android.content.res.Resources$NotFoundException: Resource ID #0x0
08-30 10:27:13.007: W/System.err(22433): at android.content.res.Resources.getValue(Resources.java:1158)
08-30 10:27:13.007: W/System.err(22433): at android.content.res.Resources.loadXmlResourceParser(Resources.java:2442)
08-30 10:27:13.007: W/System.err(22433): at android.content.res.Resources.getLayout(Resources.java:968)
08-30 10:27:13.007: W/System.err(22433): at android.view.LayoutInflater.inflate(LayoutInflater.java:395)
08-30 10:27:13.007: W/System.err(22433): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
08-30 10:27:13.007: W/System.err(22433): at com.youzikj.luobogame.Login.showNormalDialog(Unknown Source)
08-30 10:27:13.007: W/System.err(22433): at com.youzikj.luobogame.Login.showLoginDialog(Unknown Source)
08-30 10:27:13.007: W/System.err(22433): at com.youzikj.luobogame.SDK.login(Unknown Source)
08-30 10:27:13.007: W/System.err(22433): at com.youzi.luobodemo.a.onClick(Unknown Source)
08-30 10:27:13.008: W/System.err(22433): at android.view.View.performClick(View.java:4632)
08-30 10:27:13.008: W/System.err(22433): at android.view.View$PerformClick.run(View.java:19385)
08-30 10:27:13.008: W/System.err(22433): at android.os.Handler.handleCallback(Handler.java:808)
08-30 10:27:13.008: W/System.err(22433): at android.os.Handler.dispatchMessage(Handler.java:103)
08-30 10:27:13.008: W/System.err(22433): at android.os.Looper.loop(Looper.java:193)
08-30 10:27:13.008: W/System.err(22433): at android.app.ActivityThread.main(ActivityThread.java:5348)
08-30 10:27:13.008: W/System.err(22433): at java.lang.reflect.Method.invokeNative(Native Method)
08-30 10:27:13.008: W/System.err(22433): at java.lang.reflect.Method.invoke(Method.java:515)
08-30 10:27:13.008: W/System.err(22433): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
08-30 10:27:13.008: W/System.err(22433): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
08-30 10:27:13.008: W/System.err(22433): at dalvik.system.NativeStart.main(Native Method)
...全文
901 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小米乐 2016-12-20
  • 打赏
  • 举报
回复
楼主问题解决了没,我也遇见相同 的问题了
无量劫 2016-10-20
  • 打赏
  • 举报
回复
换了一种获取资源的方法 mBackGame = (Button) findViewById(GetResourceID.getResourceId(getApplication(), "id", "returngame")); import android.content.Context; final class GetResourceID { public static int getResourceId(Context context, String type, String name){ return context.getResources().getIdentifier(name, type, context.getPackageName()); } }
huoqiuzong7973 2016-09-20
  • 打赏
  • 举报
回复
请问楼主你解决了吗,怎么解决的
无量劫 2016-08-30
  • 打赏
  • 举报
回复
报错的这样是要找一个layout, private void showNormalDialog() { this.mFlag = 0; if (this.mNormalDialog == null) this.mNormalDialog = new Dialog(this.mContext); this.mNormalDialog.requestWindowFeature(1); View localView = LayoutInflater.from(this.mContext).inflate(MyResource.getIdByName(this.mContext, "layout", "luobo_dialog_login"), null); this.mNormalDialog.setContentView(localView); this.mNormalDialog.setCancelable(false); init(localView); loadData(); event(); this.mNormalDialog.show(); }
liangyong007a 2016-08-30
  • 打赏
  • 举报
回复
代码没有问题嘛?是不是setText的时候设置成int,当不混淆时可能能正常运行,然后它去资源中去找ID,这时混淆后可能找不到了

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧