fst*_*any 5 android android-gradle-plugin icu4j
我有一个包含在不同 android 应用程序中的内部库。这个库依赖于 ICU4J。这意味着我们向最终 APK 添加了约 10MB。
lib 使用 ICU4J 的一个子集,所以我想删除所有不必要的数据文件。
从ICU文档:
目前 ICU4J 没有提供任何工具来揭示数据文件之间的这些依赖关系,因此直接在 ICU4J 项目中修剪数据是一件难事。删除数据时的关键点是确保也删除对该数据的所有依赖项。
我想在构建应用程序时删除数据文件。
StackOverflow 上的一个问题是相关的:Exclude specific resources from a aar dep。不幸的是,该exploded-aar目录不再存在。
您知道我可以在哪一步从 ICU4J 依赖项中删除文件吗?这是我尝试删除cjdict.dict文件的内容:
tasks.create("excludeTask") << {
["java/com/ibm/icu/impl/data/icudt60b/brkitr/cjdict.dict"]
.collect { "${getGroup()}/${getName()}/${getVersion()}/${it}"}
.each {
// Question 2. From which dir should I remove the files?
File file = file("${buildDir}/intermediates/exploded-aar/${it}")
println("Excluding file " + file)
if (file.exists()) {
file.delete();
}
}
}
tasks.whenTaskAdded({
// Question 1. Before which task should I inject my excludeTask?
if (it.name.matches(/^transformClassesAndResources.*$/)) {
it.dependsOn excludeTask
}
})
Run Code Online (Sandbox Code Playgroud)
excludeTask?我知道 ICU4J 可以在没有所有这些开销的情况下在 Android 7.0 中使用,但我想让 APK 尽可能轻巧地用于旧设备。
Proguard/收缩资源对此不起作用(除非我错过了什么?)
用于切片 ICU 区域设置数据的更好机制是一个常见的功能请求,因此我们正在努力在即将发布的 ICU 版本中推出此功能(63 或 64,具体取决于情况进展)。同时,您可以自由地为我们的设计文档做出贡献:
https://docs.google.com/document/d/1Lt9sHy7VbMLA2KbbEpg-TgNAI8bqtetwM767enWjcUg/edit#
| 归档时间: |
|
| 查看次数: |
435 次 |
| 最近记录: |