gpt4 book ai didi

android - 如何使用 `gradlew` 构建 APK 的路径和名称?

转载 作者:行者123 更新时间:2023-11-29 23:40:27 27 4
gpt4 key购买 nike

假设我使用 gradlew 为标准 Android 项目构建调试和测试 APK,该项目是使用 Android Studio 模板之一创建的,使用以下命令:

./gradlew assembleDebug assembleAndroidTest

这会在以下位置创建文件:

  • app/build/outputs/apk/debug/app-debug.apk
  • app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

gradlew 是否以某种方式公开了这 2 个路径和文件名?


Android Studio docs据说描述了路径是如何构造的:

To initiate a debug build, invoke the assembleDebug task: gradlew assembleDebug This creates an APK named module_name-debug.apk in project_name/module_name/build/outputs/apk/

但这显然与我的任何文件都不匹配,尤其是第二个文件。

最佳答案

./gradlew 只是一个包装器,但在 build.gradle 中可以访问它们:

// root project build.gradle
project.ext.set('archiveBuildTypes', ['release', 'debug'])

// module-level build.gradle
android {
getRootProject().each {
applicationVariants.all { variant ->
variant.outputs.all { output ->
if (variant.getBuildType().getName() in rootProject.archiveBuildTypes) {
def buildType = variant.getBuildType().getName()
if (variant.versionName != null) {

// baseName is the base filename
def baseName = output.baseName

// perform some string-manipulation here, if required

// outputFileName is the file-name being actually used:
String fileName = "someapp_${variant.versionName}-${baseName}.apk"
outputFileName = new File(output.outputFile.parent, fileName).getName()

println(outputFileName)
}
}
}
}
}
}

如果需要使用 ./gradlew 获取值,您可以简单地将其包装到自定义 Gradle 任务中,然后可以将其名称作为命令行参数传递。它可能看起来有点奇怪,outputFileName 没有在该范围内定义,但它在那里是已知的。

关于android - 如何使用 `gradlew` 构建 APK 的路径和名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51916508/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com