Java 从第三方库中删除未使用的资产
我遇到过这样一个问题,minifyEnabled和shrinkResources给了我次优的结果,即:;当我包括在内时Java 从第三方库中删除未使用的资产,java,android,proguard,Java,Android,Proguard,我遇到过这样一个问题,minifyEnabled和shrinkResources给了我次优的结果,即:;当我包括在内时 'com.google.android.gms:play-services-places:9.6.1' 我还没有使用谷歌登录API,我得到了大量的登录图片。 如何从我的APK中去除它们?他们似乎增加了不少知识库 如上所述,我将proguard与缩小和收缩资源一起使用 android开发者用户指南中有一个详细的主题 基本上,您可以通过缩减资源来减少apk的大小。我已经简要地讨
'com.google.android.gms:play-services-places:9.6.1'
我还没有使用谷歌登录API,我得到了大量的登录图片。
如何从我的APK中去除它们?他们似乎增加了不少知识库
如上所述,我将proguard与缩小和收缩资源一起使用 android开发者用户指南中有一个详细的主题
基本上,您可以通过缩减资源来减少apk的大小。我已经简要地讨论了它们,我认为下面讨论的启用严格参考检查应该可以解决您的问题,但您可以查看所有可用选项以进一步减小apk大小
自定义要保留的资源 正如文档所说,在res/raw/keep.xml中使用以下xml来决定保留什么和不保留什么:
<?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" />
然后,在本例中,资源收缩器在默认情况下会采取防御措施,并将具有匹配名称格式的所有资源标记为可能已使用且不可删除
因此,将以下内容添加到res/raw/keep.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict" />
这可以显著减小尺寸
如果resource shrinker保留了静态资源,则使用前面讨论的方法手动排除它们,并查看是否正确编译和生成,如果没有,则生成时引发的异常将清楚显示resource shrinker保留资源的原因
希望有帮助 如果构建系统无法自动检测未使用的资源,您可能希望尝试通过DSL明确排除这些资源,如:
android {
packagingOptions {
exclude '/**/common_google_signin*.png'
}
}
可能存在一些减少应用程序大小和删除未使用资产的可能性 您可以从
(':lib')
项目库中删除未使用的资产
如果导入了@aar
文件,则可以执行类似操作
compile ('com.facebook.android:facebook-android-sdk:3.22.0@aar'){
exclude module: 'support-v4'
}
我们仍然在
@aar
文件中有未使用的文件,而不是找到替代方法,将@aar
替换为(':lib')
,从中删除资产。请参考此链接,您将得到答案。没有内置的解决方案。你可以试试,尽管我还没试过。
android {
packagingOptions {
exclude '/**/common_google_signin*.png'
}
}
compile ('com.facebook.android:facebook-android-sdk:3.22.0@aar'){
exclude module: 'support-v4'
}