Proguard 保留 R 类
Posted
技术标签:
【中文标题】Proguard 保留 R 类【英文标题】:Proguard retain R classes 【发布时间】:2013-03-25 20:03:42 【问题描述】:我正在将亚马逊的广告集成到我的应用程序中,并且我使用 Proguard。他们告诉我,如果我使用 Proguard,我必须“确保 R 类在混淆过程中保留其名称”
有谁知道这是什么意思,如果知道,我该如何实现?
更新
我尝试了很多不同的选项,但我仍然从 Amazon 的 SDK 中收到一个错误,即我的资源被混淆了。我试过了:
-keepnames com.my.app.*.R;
-keeppackagenames com.my.app.*.R;
-keepclassmembers com.my.app.*.R;
-keep class com.my.app.*.R;
-keepclassmembers class **.R$*
public static <fields>;
【问题讨论】:
那些 * 在包名中做了什么? 【参考方案1】:Proguard 通过将所有类名和方法替换为 A、B、C、D 等来混淆您的代码。
要保留类名,请将-keepnames
添加到您的 proguard 文件中。
例如-keepnames com.example.myproject.R
另请参阅此 SO 帖子:Proguard keep class names?
另请参阅 proguard 项目以了解有关它的作用以及可以使用哪些选项的更多信息:http://proguard.sourceforge.net/#manual/introduction.html
【讨论】:
感谢您的回复。我已经尝试了所有方法,但我无法让 Proguard 不混淆我的资源。到目前为止,我已将 OP 更新为我所尝试的方式。以上是关于Proguard 保留 R 类的主要内容,如果未能解决你的问题,请参考以下文章