Android Studio使用外部库依赖项缩小应用程序的代码

时间:2017-02-02 11:54:36

标签: android android-studio android-gradle android-proguard shrinkresources

我正在构建一个Android应用程序(仍然是空的),这个应用程序依赖于另一个包含我多年来开发的基类和工具库的android库项目。

我注意到将该依赖项添加到我的新应用程序并尝试运行它,android studio生成一个大小约为22 MB的dev apk。

为了生成尽可能小的apk我已经启用了代码缩小(build.gradle文件中的minifyEnabled)。 将minifyEnable设置为true构建apk会产生大量警告,导致无法成功生成APK,因此我已按如下方式配置 proguard-rules.pro 文件:

# for retrolambda
-dontwarn java.lang.invoke.*
# for glide
-dontwarn jp.co.cyberagent.android.gpuimage.*

-dontwarn org.codehaus.mojo.**
-dontwarn java.nio.file.**
-dontwarn javax.xml.stream.**

我在 proguard-rules.pro 中指定的相关包的警告现在已经消失,但APK建筑仍然给我这个错误:

Warning: library class android.databinding.DataBindingUtil depends on program class android.databinding.DataBindingComponent

我该如何解决这个问题? 如何减小APK的大小?

提前致谢:)

修改 我已经尝试了thisthis。我添加了

-dontwarn android.databinding.**
-keep class android.databinding.** { *; }

到我的库类(不是应用程序)的proguard-rules.pro。现在,应用程序给出了库中缺少类的错误,例如:

Error:(8, 42) error: package it.bmsoftware.android.app.activity does not exist
Error:(33, 35) error: cannot find symbol class BaseActivity

我该如何解决?

0 个答案:

没有答案