Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何改进将输出APK从Android项目复制到新文件夹的任务?_Android_Gradle_Android Gradle Plugin - Fatal编程技术网

如何改进将输出APK从Android项目复制到新文件夹的任务?

如何改进将输出APK从Android项目复制到新文件夹的任务?,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,因此,我想创建一个构建后钩子,将编译后的APK文件复制到一个新文件夹中,并给它一个包含版本代码的名称。到目前为止,我得到的是: task copyToPublishFolderDebug(type: Copy, dependsOn: assembleDebug ) { def targetFile = "MyApp-debug-" + android.defaultConfig.versionCode + ".apk" from ('build/outputs/apk/MyApp

因此,我想创建一个构建后钩子,将编译后的APK文件复制到一个新文件夹中,并给它一个包含版本代码的名称。到目前为止,我得到的是:

task copyToPublishFolderDebug(type: Copy, dependsOn: assembleDebug ) {
    def targetFile = "MyApp-debug-" + android.defaultConfig.versionCode + ".apk"
    from ('build/outputs/apk/MyApp-debug.apk') {
        rename 'MyApp-debug.apk', targetFileName
    }
    into '../build/publish/' 
}
assembleDebug.finalizedBy copyToPublishFolderDebug
这是可行的,但我认为可以改进

  • 理想的解决方案不是硬编码输入文件名,而是通过管道将输出从
    assembleDebug
    传输到此任务。(相关:)问题是
    assembleDebug
    没有任何输出<但是,code>zipalignDebug确实存在,但是任务在评估阶段不存在,因此从zipalignDebug编写
    不会编译。有办法解决这个问题吗?我可以在
    事后评估阶段定义任务吗

  • 我必须将此任务复制粘贴到发布版本(以及我创建的任何其他版本类型)的90%相同的任务中。有没有办法用简单的方法把那东西弄干

编辑:误解问题#1,认为这是一个文件而不是目录。复制是正确的,除非它创建了一个文件夹并且没有重命名


edit2:了解如何重命名,使其不再成为问题

看起来您可以使用外部属性:

ext.output = "Initial Value"

task firstTask() << {
    output = "Output";
}

task secondTask(dependsOn: firstTask) << {
    println output;
}
ext.output=“初始值”

task firstTask()所选答案如何解决您的问题?