How can I force Proguard to keep my .xml resource file?

前端 未结 3 1284
广开言路
广开言路 2020-12-03 17:33

I am succesfully using proguard for my Android apps.

However, with one app I am having trouble.

This app uses a java library that has a .xml fi

相关标签:
3条回答
  • 2020-12-03 17:50

    First of all, It turned out that using ant and my build.xml script didn't process the .xml resource file at all. You'll need to manually add a copy action to the build.xml for the resource files to be copied to the output dir.

    Still, having solved that, proguard messed up my work. Solution was:

     -keeppackagenames the.package.where.the.file.is.kept
    

    This made sure that the .xml file could be found by calling the Library.class.getResource.

    0 讨论(0)
  • 2020-12-03 17:55

    You shoud add a new file keep.xml under res/raw.

    <?xml version="1.0" encoding="utf-8"?>
    <resources xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"
        tools:discard="@layout/unused2" />
    

    In tools:keep, you list the layouts you want to keep. You can even keep specefic drawables if you use reflection in your code to get your drawable

    tools:keep="@drawable/ico_android_home_infosperso"
    

    I prefer to add tools:shrinkMode="strict" so that i make sur no resource is eliminated unless it is not used for sure. You may want to have a look at this link Shrink your code. Don't Forget to add these lines to your proguard rules:

    -keepattributes InnerClasses -keep class **.R -keep class **.R$* { <fields>; }

    0 讨论(0)
  • 2020-12-03 18:16

    You should store files in the appropriate /res/xml, /res/assets, or /res/raw folder and access them through the resource management system or the asset manager correspondingly. You can read more about providing resources in Android Developer's Guide.

    0 讨论(0)
提交回复
热议问题