如何解决构建android时如何彻底删除未使用的资源?
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#000000" />
</shape>
这些资源组中有些被实际使用,有些没有。
该资源组属于另一个库,我的应用导入并使用了该库。
由于这个组一直在更新,我不想把它从项目中删除,我只想把它从构建输出中排除。
https://developer.android.com/studio/build/shrink-code
官方文档说我可以通过shrinkResource函数删除我不用的资源。所以我设置了我的 app.gradle 如下。
...
release {
minifyEnabled true
shrinkResources true
proguardFiles 'proguard-rules.pro' <-- This is an empty file.
}
...
dependencies {
implementation project(':myResourceLibrary')
...
}
我还在 res/raw 中创建了 keep.xml 以进行严格的资源检查。
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@raw/*" <-- This part is the same with or without it.
tools:shrinkMode="strict" />
好的,我运行了构建并成功获得了 apk。但是通过Android Studio的apk分析查看apk时,并没有移除资源。
资源保留在下面的表格中。
<?xml version="1.0" encoding="utf-8"?>
<x />
构建日志指出资源的处理方式如下。
Skipped unused resource 'my_resource_file': 444 bytes (replaced with small dummy file of size 104 bytes)
好吧,我可以说单独减少容量是有效的,但我喜欢这里 (https://sites.google.com/a/android.com/tools/tech-docs/new-build-system/resource-shrinking) 我希望完全删除未使用的文件。
没有任何文档解释为什么可以完全删除此文件,或者为什么不能完全删除它。
为什么gradle不知道资源没有被使用,但是不删除文件?我可以删除那个文件吗?
我正在使用 gradle 4.1.0 进行构建,并且正在使用以下命令进行构建。
./gradlew --info assemble(MyProductFlavor)Release
即使我使用 Android Studio 的Rebuild Project
,它也会处于与下图相同的状态。
解决方法
这部分代码:
release {
minifyEnabled true
shrinkResources true
proguardFiles 'proguard-rules.pro' <-- This is an empty file.
}
要删除未使用的资源,然后缩小您的代码(因为没有人可以反编译您的 apk),如果您看到您的 apk 还包含未使用的资源,因为该 apk 用于调试,而 minify/shrink 不会影响调试apk 但对发布 apk 有影响。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。