Android 将APK文件从生成位置复制到gradle 4.4中的其他位置

Android 将APK文件从生成位置复制到gradle 4.4中的其他位置,android,gradle,groovy,android-gradle-plugin,build.gradle,Android,Gradle,Groovy,Android Gradle Plugin,Build.gradle,正如在gradle4.4中一样,不可能更改APK输出文件的路径,我们现在不能从文档中为APK的输出使用绝对路径-因此我搜索了这么多,并找到了一个解决方案,我们可以在构建后将APK复制到我们想要的位置,但我对gradle脚本没有太多的想法,我是无法调用复制任务。有人能帮我吗 来自我的gradle的代码: android { ................ android.applicationVariants.all { variant -> variant

正如在
gradle
4.4
中一样,不可能更改APK输出文件的路径,我们现在不能从文档中为APK的输出使用绝对路径-因此我搜索了这么多,并找到了一个解决方案,我们可以在构建后将
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文件复制到另一个路径吗?谢谢

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
移除

task copyApk

我可以在
gradle
文件中运行
copy
脚本,如下所示:

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
  }
 }

我可以在
gradle
文件中运行
copy
脚本,如下所示:

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
  }
 }

在gadle 4.4中,我们不能为apk输出使用绝对路径,在以前的gradle版本中,我是按照您建议的方式进行的,但在最新的gradleoutputFileName=new文件(“../”,“${variant.name}-${variant.versionName}.apk”)。/”是一个相对路径,您可以用其他路径替换。我使用的是gradle4.4,它可以工作。我们不能在gadle 4.4中使用apk输出的绝对路径。在以前的gradle版本中,我使用的方法与你建议的相同,但在最新的gradleoutputFileName=new文件(“../”,“${variant.name}-${variant.versionName}.apk”)。/“是一个相对路径,你可以用其他路径替换,../../”。我使用的是gradle4.4,它可以工作。但是,这个复制过程将在编译APK之前进行,只移动先前编译的APK,而不是最新的APK。但是,这个复制过程将在编译APK之前进行,只移动先前编译的APK,而不是最新的APK。