android中的proguard和R
Posted
技术标签:
【中文标题】android中的proguard和R【英文标题】:proguard and R in android 【发布时间】:2013-10-15 12:02:46 【问题描述】:我是第一次在我的 android 应用中使用 proguard。
我没有让它正常工作。我正在查看我的 usage.txt 文件,以查看 proguard 从我的代码中删除的部分是什么。
我看到这些不寻常的东西,不知道该怎么想:
[my_package].Manifest
[my_package].Manifest$permission
[my_package].R$array
[my_package].R$attr
[my_package].R$bool
[my_package].R$color
[my_package].R$dimen
[my_package].R$id
[my_package].R$integer
[my_package].R$layout
[my_package].R$menu
[my_package].R$raw
[my_package].R$string
[my_package].R$style
[my_package].R$styleable
proguard 是否会从我的代码中删除所有这些内容?
【问题讨论】:
你的程序在使用proguard后可以工作了吗? 不,proguard 导致我的应用出现一些错误。我想也是因为我在打电话的一些反思。我正在使用 keep 选项来避免删除/重命名此方法和类。 是的,当我们使用反射时,我们必须使用keep选项。 Proguard makes reflection with the R class in android application no longer work的可能重复 【参考方案1】:将此添加到您的 proguard 配置中:
#Keep the R
-keepclassmembers class **.R$*
public static <fields>;
看看这个通用的 android proguard 设置:Android: What are the recommended configurations for Proguard?
编辑: 对于反射添加:
-keepattributes InnerClasses
-keep class **.R
-keep class **.R$*
<fields>;
【讨论】:
这已经在$sdk.dir/tools/proguard/proguard-android.txt
中,所以您不需要再次指定。
我正在使用:$sdk.dir/tools/proguard/proguard-android-optimize.txt 所以我想我已经添加了这些行
看这个。 ***.com/questions/13923815/…以上是关于android中的proguard和R的主要内容,如果未能解决你的问题,请参考以下文章
Android build.gradle 中的 proguard-android-optimize.txt 与 proguard-android.txt
Android中的consumer-rules.pro和proguard-rules.pro有啥区别?