如何设置一个对Gradle构建的APK做任务的任务?

时间:2017-12-06 15:52:09

标签: android gradle groovy

我需要设置一个自定义任务,我在使用Gradle for Android构建APK后运行。现在我实际上有两个任务。一个使用APK的路径构建XML文件作为输入,另一个在XML任务(名为packageConfig)之后运行,并将APK和XML文件捆绑为ZIP。

目前,我的packageConfig任务出现问题。它仅为" fullRelease"运行python脚本。产品味道,当我实际有多个时:

  • x86Debug
  • x86Release
  • armDebug
  • armRelease
  • fullDebug
  • fullRelease

我的脚本只执行一次,而且错误的APK。例如,我将像这样调用gradle:

$ gradlew :Applications:zApp:assemblex86debug packageConfig

我在我的python脚本中设置print()调用以输出传入的APK路径,它是:

build\outputs\apk\full\release\zApp.apk

我期待的路径(基于我在命令行中选择的产品风格,以及我知道的那个APK):

build\outputs\apk\x86\debug\zApp.apk

我将在下面粘贴我的gradle任务。任何人都可以帮助我理解我做错了什么吗?我可以对我的脚本进行哪些更正以使其在正确的APK上运行我的脚本?

task packageConfig(type: Exec) {
    def buildCommit = getBuildCommit()
    def buildBranch = getVcsBranchName()
    def buildDescription = buildBranch + '-' + buildCommit
    def buildDate = getBuildDate()

    workingDir buildscript.sourceFile.parent
    android.applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def apk = output.outputFile
            def apkDir = apk.getParent();
            def inputConfig = '' + project.projectDir + File.separator +
                packageConfigXmlFile
            def outputConfig = apkDir + File.separator + 'PackageConfig.xml'

            commandLine 'python', 'setup-package-config.py', versions.version, inputConfig,
                outputConfig, apk, buildDescription
        }
    }
}

0 个答案:

没有答案