Измените папку вывода apk в Gradle 4.1
Я хотел бы изменить APK output folder
, и это то, что я использовал:
applicationVariants.all { variant ->
variant.outputs.all {
def filePath = "${rootProject.rootDir.absolutePath}/apks/${variant.name}"
println("My Path: " + filePath)
outputFileName = filePath
}
}
Однако он не работал в Gradle 4.1
(предварительный просмотр Android studio 3.0). Вместо того, чтобы генерировать папку как путь выше, он сгенерировал вышеуказанный путь в старой папке debug
, как показано ниже:
![введите описание изображения здесь]()
У кого-нибудь есть решение для этого? Спасибо.
Ответы
Ответ 1
Из руководство по миграции:
Использование API-интерфейса для управления вариантами вывода ломается с новым плагином. Он по-прежнему работает для простых задач, таких как изменение имени APK во время сборки, как показано ниже:
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
Однако более сложные задачи, связанные с доступом к объектам outputFile, больше не работают. Это потому, что на этапе конфигурации больше не создаются конкретные задачи. Это приводит к тому, что плагин не знает все свои выходы спереди, но это также означает более быстрое время настройки.
Ответ 2
У меня была аналогичная проблема, потому что мне нужен выход apk в известной папке, а не в папке в зависимости от имени пользователя компьютера. Поэтому я исправил вот так:
applicationVariants.all { variant ->
variant.outputs.all {
def apk = output.outputFile;
def newName = apk.name.replace(".apk", "-v" + variant.versionName + "-RELEASE.apk");
newName = newName.replace("-" + variant.buildType.name, "");
outputFileName = file("/" + newName)
}
}
С этим я получаю apk в:
".../выходы/APK/flavorName/buildTypeName/xxx.apk"
Надеюсь, это поможет вам.
Ответ 3
Это обходной путь для сохранения пути вывода после обновления до gradle 4.x.
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "../" + outputFileName
}
}
теперь apk создается на платформах/android/build/output/apk/android-release.apk