Android 在库中使用时从ICU4J中剥离数据文件

Android 在库中使用时从ICU4J中剥离数据文件,android,android-gradle-plugin,icu4j,Android,Android Gradle Plugin,Icu4j,我有一个包含在不同android应用程序中的内部库。 此库依赖于ICU4J。这意味着我们向最终APK添加~10MB lib使用了ICU4J的一个子集,所以我想删除所有不必要的数据文件 从: 目前,ICU4J没有提供任何工具来揭示数据文件之间的这些依赖关系,因此直接在ICU4J项目中修剪数据是不成功的。删除数据时的关键点是确保删除对该数据的所有依赖关系 我想在应用程序生成时删除数据文件 有关StackOverflow的一个问题是:。不幸的是,分解的aar目录不再存在 您知道我可以在哪一步从ICU4

我有一个包含在不同android应用程序中的内部库。 此库依赖于ICU4J。这意味着我们向最终APK添加~10MB

lib使用了ICU4J的一个子集,所以我想删除所有不必要的数据文件

从:

目前,ICU4J没有提供任何工具来揭示数据文件之间的这些依赖关系,因此直接在ICU4J项目中修剪数据是不成功的。删除数据时的关键点是确保删除对该数据的所有依赖关系

我想在应用程序生成时删除数据文件

有关StackOverflow的一个问题是:。不幸的是,
分解的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
    }
})

tasks.create(“excludeTask”)切片ICU区域设置数据的更好机制是一个常见的功能请求,因此我们正致力于在即将发布的ICU版本中推出此功能(63或64,具体取决于情况)。同时,freel可免费向我们的设计文档提供: