【问题标题】:How to put out apk file uses gradle v4.1 in Android Studio 3.0+?如何在 Android Studio 3.0+ 中使用 gradle v4.1 输出 apk 文件?
【发布时间】:2017-12-04 08:24:30
【问题描述】:

我想在版本为 v4.1 的 gradle 中设置 APK 文件路径,但我可以设置其名称而不设置文件路径。我该怎么办?

applicationVariants.all {
    variant->
        variant.outputs.all {
            output->
                def outputFile = output.outputFile
                if (outputFile != null && outputFile.name.endsWith('.apk')) {
                    outputFileName = "${defaultConfig.applicationId}_${variant.productFlavors[0].name}_${defaultConfig.versionName}_${releaseTime()}.apk"
                }
        }
}

【问题讨论】:

  • 您有任何错误日志吗?你在哪里调用了 gradle 中的 applicationVariants.all { }?
  • 我没有错误日志,它运行成功。我想知道如何在 gradle v4.1 中设置自定义应用文件夹。
  • 我已经发布了答案!

标签: android android-gradle-plugin android-studio-3.0


【解决方案1】:

来自migration guide

使用 Variant API 来操作变体输出被破坏 新插件。它仍然适用于简单的任务,例如更改 APK 构建期间的名称。

但是,涉及访问 outputFile 的更复杂的任务 对象不再起作用。这是因为特定于变体的任务不是 在配置阶段创建的更长。

您已经取得的成就是我们在构建时可以使用 APK 做的唯一事情。

您可以在构建完成后使用Gradle copy task 将文件移动到另一个位置来解决问题:

task copySupportFiles(type: Copy){
    from 'src/main/support'
    into 'build/outputs/apk'
    include '**/*.dat'
    include '**/.txt'
}

assembleDebug {}.doLast{
    tasks.copySupportFiles.execute()
}

【讨论】:

  • 首先,谢谢您的回答。我看到一些关于它的博客。创建一个添加文件夹的数组,然后 foreach fileArray,复制到一个新文件夹。幸运的是,我找到了更好的方法。
  • @Mr.Four 哪一个?你能和我分享吗?但我的答案是正确的?
  • 我已经发布了方法,但它可能在 gradle 5.0+ 中被弃用。
【解决方案2】:

我已经找到了解决方案:

applicationVariants.all{
            variant->
                //Android Studio 3.0+
                variant.outputs.all{
                    outputFileName = "${defaultConfig.applicationId}_${variant.productFlavors[0].name}_${defaultConfig.versionName}_${releaseTime()}.apk"
                    variant.packageApplication.outputDirectory = new File("xx/yyy/ttt")

                }
        }

但它可能在 gradle 5.0+ 中被弃用,因为variant.packageApplication.outputDirectory 将在 gradle 5.0 中被删除。你会看到一个警告:access outputDirectory exceeds its access rights

【讨论】:

  • 谢谢@nhoxbypass。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
相关资源
最近更新 更多