【问题标题】:Do not include unused library to release apk不要包含未使用的库来发布 apk
【发布时间】:2016-08-20 14:35:58
【问题描述】:

我在我的android项目中使用gson库:

compile 'com.google.code.gson:gson:2.7'

我不是在 app 模块中使用它,而是在我的 android 库中使用它,并且这个库添加到项目中。只有几个类(groupA)使用了gson。 Android 库是通用库,在多个 android 项目中使用,但在当前的 android 项目中不使用 groupA 中的类。

我在build.gradle 的应用程序中:

android {
 ...
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

我构建发布 apk 并反编译 classes.dex。我在 apk 中找不到类 groupA。没关系。 proguard 删除未使用的代码。

不幸的是,我看到了gson 课程。但为什么?为什么proguard 不删除gson 类? gson 确实不用于项目的发布版本。

【问题讨论】:

标签: android gradle proguard


【解决方案1】:

我认为你应该看看每个构建中包含的 gson 的 proguard 文件:https://github.com/google/gson/blob/master/examples/android-proguard-example/proguard.cfg识别那里的其余类吗?

【讨论】:

  • 对不起,我不明白你的意思。我的 proguard 规则文件中没有任何带有 gson 的字符串。
  • 那么,对于gson我们没有解决办法?
【解决方案2】:

为什么 proguard 不删除 gson 类?

问它:
使用 proguard 选项 -whyareyoukeeping 找出未删除 gson 类的原因

http://proguard.sourceforge.net/manual/usage.html#shrinkingoptions

【讨论】:

  • 我在下一行添加到 proguard 规则文件:-whyareyoukeeping class com.google.gson.Gson。然后从命令行构建:gradle assembleRelease --info。我在日志字 gson 中搜索,然后找到下一个:`com.google.gson. 由配置中的指令保存。
猜你喜欢
  • 1970-01-01
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
相关资源
最近更新 更多