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
フォルダー内に上記のパスを生成しました。
誰にもこれに対する解決策がありますか?ありがとう。
これは、gradle 4.xへのアップグレード後に出力パスを同じに保つための回避策です。
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "../" + outputFileName
}
}
プラットフォーム/Android/build/outputs/apk/Android-release.apkでapkが生成されるようになりました
移行ガイド から:
Variant APIを使用してバリアント出力を操作することは、新しいプラグインでは機能しません。以下に示すように、ビルド時にAPK名を変更するなどの単純なタスクでも機能します。
Android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
ただし、outputFileオブジェクトへのアクセスを含むより複雑なタスクは機能しなくなりました。これは、バリアント固有のタスクが構成段階で作成されなくなったためです。これにより、プラグインはすべての出力を事前に認識しなくなりますが、設定時間も短縮されます。
コンピューターのユーザー名に応じたフォルダーではなく、既知のフォルダーに出力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 = "./" + newName
}
}
これで、apkを取得します: ".../outputs/apk/flavorName/buildTypeName/xxx.apk"
お役に立てば幸いです。