如何使用 Android Gradle 插件 3.0.0+ 来操作变量输出?
How can Variant Outputs be manipulated using the Android Gradle Plugin 3.0.0+?
用于 Gradle 的 Android 插件的最新版本 (3.0.0) 已破坏其 API 用于操作 Variant Outputs。此 API 用于处理构建期间创建的文件(例如 AndroidManifest.xml),已被删除以缩短配置时间。
有哪些新的 API 可用于操作变体输出,它们与 2.X API 有何不同?
outputFiles 的更改现已记录在 Android Developer site。
本质上,建议不要直接从 gradle API 访问 outputFile,而是访问包含该文件的目录。下面的代码片段使用清单文件演示了这一点,但也可以应用于其他输出文件。
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
output.processManifest.doLast {
String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
def manifestContent = file(manifestPath).getText()
// Manipulate the file as needed
}
}
}
看来他们又更改了这个界面。 (android gradle 插件 3.3+ 或 Gradle 5.4+)
我正在使用以下方法检索清单路径:
def manifestPath = "${manifestOutputDirectory.get().asFile}/AndroidManifest.xml"
从 here
中得出
正在获取 java.io.FileNotFoundException
路径中包含以下内容
property(interface org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, /Users/me/app/build/intermediates/merged_manifests/debug))
用于 Gradle 的 Android 插件的最新版本 (3.0.0) 已破坏其 API 用于操作 Variant Outputs。此 API 用于处理构建期间创建的文件(例如 AndroidManifest.xml),已被删除以缩短配置时间。
有哪些新的 API 可用于操作变体输出,它们与 2.X API 有何不同?
outputFiles 的更改现已记录在 Android Developer site。
本质上,建议不要直接从 gradle API 访问 outputFile,而是访问包含该文件的目录。下面的代码片段使用清单文件演示了这一点,但也可以应用于其他输出文件。
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
output.processManifest.doLast {
String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
def manifestContent = file(manifestPath).getText()
// Manipulate the file as needed
}
}
}
看来他们又更改了这个界面。 (android gradle 插件 3.3+ 或 Gradle 5.4+)
我正在使用以下方法检索清单路径:
def manifestPath = "${manifestOutputDirectory.get().asFile}/AndroidManifest.xml"
从 here
中得出正在获取 java.io.FileNotFoundException
路径中包含以下内容
property(interface org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, /Users/me/app/build/intermediates/merged_manifests/debug))