task runBatchScript(type: Exec) { commandLine 'cmd', '/c', 'path/to/your/script.bat'}
这个task是放在模块(非项目)下的build.gradle文件中的,接着定义这个task的执行时机,可使用preBuild或asemble的相关方法。
Task的执行在Gradle中,preBuild.dependsOn和assemble.dependsOn都是用来指定任务依赖关系的,但它们在构建生命周期中的作用时机不同。
preBuild.dependsOn: preBuild是一个在Android构建生命周期中非常早期的任务。当指定preBuild.dependsOn时,添加的任务会在编译代码之前执行。这通常用于执行一些准备工作,比如设置环境变量,检查必要的依赖等。

assemble.dependsOn: 相比之下,assemble任务是在编译完成后执行的,它负责将所有的编译结果打包成APK文件。当使用assemble.dependsOn时,添加的任务会在APK打包之前执行。这可以用于最后的检查,比如验证编译结果,或者修改打包内容等。
简而言之,preBuild.dependsOn用于在编译前执行任务,而assemble.dependsOn用于在打包前执行任务。选择哪一个取决于您想要在构建流程的哪个阶段执行特定的任务。 除了表示依赖关系,preBuild和assemble还有更多的用法,可以直接在build.gradle文件中查看其属性。
下面是在编译前执行名为runBatchScript的task:
preBuild.dependsOn(runBatchScript)
如果是编译后执行,可使用
// 在 assemble 任务之后执行拷贝回文件任务//assemble{// dependsOn(copyBackFiles)//}// 在 assemble 任务之后执行删除临时目录任务assemble.finalizedBy(copyBackFiles)
说明:在gradle 5.6.4,Android Studio 3.6.3下没起作用。
小结本文简单介绍了下android apk构建过程中,通过自定义task来干预apk的执行,可据此实现一些诸如js加密处理等的功能,当然Gradle 的任务类型非常灵活,你可以根据需要自定义任务类型来执行各种操作。