Gradle Android - 覆盖标准任务

pde*_*d59 5 android gradle

我正在尝试将我的Gradle构建的行为自定义为Android-Wear友好.

我在我的处理apk中手动捆绑我的磨损apk(因为我没有设法自动完成).

这意味着,如果我想构建一个新版本的处理apk,我必须手动构建我的服装apk,复制/过去生成的穿 - apk insinde我的res/raw处理项目然后构建新处理的apk.

我希望所有这些都能实现自动化.

所以,我需要做的是:

  1. 从cmd行启动应用程序:assembleRelease
  2. Gradle先做一次穿:assembleRelease
  3. 最后,Gradle从中获取apk wear/output/apk/wear-apk.apk并将其复制app/src/main/res/raw
  4. 然后Gradle可以继续做app:assembleRelease

我没有找到如何从另一个任务启动任务(wear:assembleRelease).

欢迎任何帮助!

pde*_*d59 4

我找到了一个可能不是最佳的解决方案,但它可以满足我的需要。

在我处理的应用程序中,我首先必须说 assembleRelease 取决于我的wear:assembleRelease:

应用程序/build.gradle

project.afterEvaluate {
    preReleaseBuild.dependsOn(':wear:assembleRelease')
}
Run Code Online (Sandbox Code Playgroud)

preReleaseBuild是构建的第一个任务之一,但该任务是动态创建的,这就是为什么您必须在评估项目后包装它。

然后,在我的wear中build.gradle,我必须在构建结束时指定副本:

磨损/构建.gradle

assembleRelease << {
    println "Copying the Wear APK"
    copy {
        from 'build/outputs/apk'
        into '../app/src/main/assets'
        include '**/wear-release.apk'
    }
}
Run Code Online (Sandbox Code Playgroud)

仅通过这些修改,我就成功地解释了问题中的工作流程。

这可以得到增强,因为它仅适用于发布版本,但这是一个很好的第一步。

请随意评论这个解决方案。