gpt4 book ai didi

android - 使用Android项目的Gradle插件将代码注入(inject)合并 list

转载 作者:行者123 更新时间:2023-12-03 05:34:36 24 4
gpt4 key购买 nike

我尝试将代码注入(inject)“合并 list ”文件(app/build/intermediates/merged_manifests/../AndroidManifest.xml),因为我有一个库,我不想出现在开发人员面前。

我编写了一个 Gradle 脚本,并在每个任务之后执行此脚本(仅用于测试)。

虽然,我可以看到我的代码被正确注入(inject),但在 apk 中没有任何变化。

我的脚本的一部分:

gradle.taskGraph.afterTask {
task ->
def manifestPath = "${buildDir.path}/intermediates/merged_manifests/${getCurrentFlavorAndBuildType()}/AndroidManifest.xml"
def manifestFile = new File(manifestPath)
if (manifestFile.exists()) {
def manifestContent = manifestFile.getText()
manifestContent = manifestContent.replaceAll("com.example", android.defaultConfig.applicationId)
def fos = new FileOutputStream(manifestFile.getPath())
fos.write(manifestContent.getBytes())
fos.flush()
fos.close()
println("rootProject:$manifestPath")
}

}

最佳答案

最后,我的脚本运行良好:

applicationVariants.all { variant ->
variant.outputs.each { output ->
output.processManifest.doLast {
def manifestPath = "${buildDir.path}/intermediates/merged_manifests/${getCurrentFlavorAndBuildType()}/AndroidManifest.xml"
def manifestFile = new File(manifestPath)
if (manifestFile.exists()) {
def manifestContent = manifestFile.getText()
manifestContent = manifestContent.replaceAll("com.example", android.defaultConfig.applicationId)
def fos = new FileOutputStream(manifestFile.getPath())
fos.write(manifestContent.getBytes())
fos.flush()
fos.close()
println("rootProject:$manifestPath")
}

}
}
}

我应该将我的脚本执行到这些 block 中:
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.processManifest.doLast {
// something
}
}
}

关于android - 使用Android项目的Gradle插件将代码注入(inject)合并 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57219080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com