2013-10-08 5 views
3

Я использую proguard в первый раз с моим Android-приложением.proguard и R в android

Я не работаю правильно. Я смотрел на свой файл usage.txt, чтобы узнать, какая часть этого прогейдера была удалена из моего кода.

Я вижу это необычные вещи и не знал, что думать:

[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 удалить все это содержимое из моего кода?

+0

Ваша программа работает после использования proguard? – ramaral

+0

Нет, proguard вызывает некоторые ошибки в моем приложении. Я думаю, это также из-за некоторых размышлений, которые я вызываю. Я работаю с опцией keep, чтобы избежать удаления/переименования этих методов и классов. –

+0

Да, когда мы используем отражение, мы должны использовать опцию keep. – ramaral

ответ

0

Добавьте к конфигурации Proguard:

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

и посмотреть на это для общего андроида установки Proguard: Android: What are the recommended configurations for Proguard?

EDIT: Для отражения добавить:

-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 –

Смежные вопросы