【问题标题】:How to remove some density drawable from android library如何从android库中删除一些可绘制的密度
【发布时间】:2016-02-29 13:09:42
【问题描述】:

我的应用导入 admob:

com.google.android.gms:play-services-ads:8.4.0

但它使我的应用程序非常大,我发现这个库中有“drawable-xxxhdpi”、“drawable-tvdpi”的图像非常大,我想从这个库中删除(排除)那些。

我在 gradle 中使用了“resConfigs”来只包含我之前需要的密度文件夹,

但不确定,因为密度的“resConfigs”何时不支持

https://code.google.com/p/android/issues/detail?id=179136

apk 的密度拆分似乎不符合我的要求。

我现在该怎么办?

【问题讨论】:

标签: android gradle


【解决方案1】:

您可以尝试从发行版 apk 中拆分和排除 xxxhdpi 和 tvdpi。

  splits { 
        density { 
                 enable true  
                 exclude "xxxhdpi", "tvdpi",
        }
   }

这将生成不同的 apk,以便稍后提交到 playstore。有关拆分的更多信息here.

【讨论】:

  • 我不得不说这个答案不是我真正需要的。它将分别拆分为 mdpi、hdpi 包。
【解决方案2】:

您可以尝试使用Resource Shrinking,它将从库中删除不需要的资源。来自其文档:

除了删除项目中在运行时实际上不需要的资源之外,这还会从库中删除资源您取决于您​​的应用程序是否实际需要这些资源

但是,您还需要配置 Proguard,这本身就是一个不同的问题。但如果您已经配置好了,只需将 shrinkResources true 添加到您的 gradle 脚本中,如下例所示。

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

【讨论】:

  • 我不清楚它是否对您不起作用,或者您是否说资源收缩不适用于 resConfigs。如果是前者,则可能是按照提供的链接中所述设置strict 模式的原因。
  • shrinkResources 删除未使用的资源。 virsir 想要移除特定密度的已用资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 2016-05-24
  • 2012-07-30
  • 1970-01-01
  • 2015-11-08
相关资源
最近更新 更多