自动在应用程序和库之间切换 'personalities'
Switching 'personalities' between app and library automatically
我有两个应用程序,A 和 L。它们独立工作,除了 L 具有双重人格:它还作为 A 的库。
为此,我制作了一个简单的 bash 脚本,该脚本编辑 L 的 build.gradle 以在 com.android.application
和 com.android.library
之间切换 plugin
键.在将 A 和 L 构建为应用程序之前,我 运行 这个 bash 脚本。
这很好用。然而,当我从 Android Studio 构建 A.apk
时,我想自动执行此操作。可能吗?
是的,这是可能的,您可以定义自己的任务来调用脚本并link使用构建命令执行。
点赞
task excuteScript(type: Exec) {
workingDir "."
commandLine 'cmd', 'script.bat'
doLast {
println "Executed!"
}
}
tasks.named("build") { finalizedBy("excuteScript") }
这将在您每次 'build' 投影时调用 excuteScript 任务。
'build' 任务的命名可能存在问题,因为我正在使用 spring 框架,这工作正常,但我不确定 Android 任务的命名。
并且正如 CommonsWare 所建议的那样,将公共代码移动到单独的库模块 M 并让您的两个应用程序使用会更好。
但我认为您可能想知道如何使用自定义任务来完成它。
我有两个应用程序,A 和 L。它们独立工作,除了 L 具有双重人格:它还作为 A 的库。
为此,我制作了一个简单的 bash 脚本,该脚本编辑 L 的 build.gradle 以在 com.android.application
和 com.android.library
之间切换 plugin
键.在将 A 和 L 构建为应用程序之前,我 运行 这个 bash 脚本。
这很好用。然而,当我从 Android Studio 构建 A.apk
时,我想自动执行此操作。可能吗?
是的,这是可能的,您可以定义自己的任务来调用脚本并link使用构建命令执行。
点赞
task excuteScript(type: Exec) {
workingDir "."
commandLine 'cmd', 'script.bat'
doLast {
println "Executed!"
}
}
tasks.named("build") { finalizedBy("excuteScript") }
这将在您每次 'build' 投影时调用 excuteScript 任务。 'build' 任务的命名可能存在问题,因为我正在使用 spring 框架,这工作正常,但我不确定 Android 任务的命名。
并且正如 CommonsWare 所建议的那样,将公共代码移动到单独的库模块 M 并让您的两个应用程序使用会更好。
但我认为您可能想知道如何使用自定义任务来完成它。