2013-10-08 108 views
3

我用我的android應用程序第一次使用proguard。proguard和R在android

我沒有得到它正常工作。我正在查看我的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的從我的代碼刪除所有內容嗎?在此

#Keep the R 
-keepclassmembers class **.R$* { 
    public static <fields>; 
} 

,並尋找一個通用的Android proguard的設置:

+0

你的計劃在使用proguard之後工作? – ramaral

+0

不,proguard在我的應用程序中導致一些錯誤。我想也是因爲我打電話的一些反思。我正在使用keep選項以避免刪除/重命名此方法和類。 –

+0

是的,當我們使用反射時,我們必須使用keep選項。 – ramaral

回答

0

添加到您的ProGuard配置Android: What are the recommended configurations for Proguard?

編輯: 反思補充一點:

-keepattributes InnerClasses 

-keep class **.R 
-keep class **.R$* { 
    <fields>; 
} 
+0

這已經在'$ {sdk.dir}/tools/proguard/proguard-android.txt'中,因此您不需要再指定。 – zapl

+0

我正在使用:$ {sdk.dir} /tools/proguard/proguard-android-optimize.txt所以我想我已經添加了這行代碼 –

+0

看到這個。 http://stackoverflow.com/questions/13923815/proguard-makes-reflection-with-the-r-class-in-android-application-no-longer-work –