将APK文件从构建位置复制到gradle 4.4中的其他位置

时间:2018-05-04 07:56:15

标签: android gradle groovy android-gradle build.gradle

gradle 4.4一样,无法更改APK输出文件的路径,我们现在无法使用文档中的apk输出的绝对路径 - Modifying variant outputs at build time may not work所以我在SO上搜索并找到了一个解决方案,我们可以在构建之后将apk复制到我们想要的位置,但我对gradle脚本没有太多了解,我无法调用复制任务。谁能帮我。

来自我的gradle的

代码:

    android {
    ................
    android.applicationVariants.all { variant ->
    variant.outputs.all {
        if (variant.name.contains("Release")) {
             outputFileName = "${variant.name}-${variant.versionName}.apk"
        }
     }
     assembleRelease {
        dependsOn copyDocs
    }
    }// end of android brace

    task copyApk(type: Copy) {
    from outputFileName
    into file("${project.buildDir}/outputs/apk")
   }
  }

从这个方面我得到错误:

  

无法为任务

获取未知属性'outputFileName'

知道如何将apk文件复制到另一个路径吗?感谢。

2 个答案:

答案 0 :(得分:1)

android.applicationVariants.all { variant ->
    variant.outputs.all {
        println variant.name
        if (variant.name.contains("release")) {
            outputFileName = new File("../", "${variant.name}-${variant.versionName}.apk")
            println outputFileName
        }
    }
}

并删除

task copyApk

答案 1 :(得分:0)

我可以通过在copy文件中运行gradle脚本来做到这一点:

android.applicationVariants.all { variant ->
variant.outputs.all {

copy {
      from file("${project.buildDir}/outputs/apk/" + variant.name + "/release/${outputFileName}")
      into file("${project.buildDir}/outputs/apk/")
     }
    delete file("${project.buildDir}/outputs/apk/" + variant.name) // i don't want apk on this location so after successful copy i am deleting it
  }
 }