Android Studioをversion 2.2に、そしてGradle-pluginを2.2.に更新すると、次のエラーが表示されます。
"タイプorg.gradle.api.Projectのプロジェクト ':app'の不明なプロパティ 'assembleRelease'を取得できませんでした。"
プラグインのバージョンを2.1.3に戻すと、コードは機能しますが、それは長期的なオプションではありません。
私のコード:
apply plugin: 'com.Android.application'
dependencies {
...
}
Android {
...
}
...
assembleRelease.doLast {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
ヒント: project.ext.androidVersionCodeは別の場所で定義された変数であり、ビルド番号が含まれています。 assembleRelease.doLastのコードは、生成されたapkファイルを移動/名前変更するだけです。
アドバイスありがとうございます!タンゲン
タスクを少し書き換えて、次のようにしてみてください。
task renameBuildTask() << {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
dependsOn 'assembleRelease'
}
また、より良い理解を得るために this 質問をチェックできます。
[〜#〜] edit [〜#〜]
@tangensがコメントで言ったように:
コールグラドルアセンブルを例えばgradle renameBuildTask。ありがとうございました!答えにはエラーが含まれています。正しい:task renameBuildTask()<< {...}
tasks.whenTaskAdded { task ->
if (task.name == 'assembleRelease') {
task.finalizedBy 'yourRenameTasks'
}
}
afterEvaluate {}でコードをラップすることもできます:
afterEvaluate {
assembleRelease.doLast {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
}
gradle-2.14.1およびAndroid gradle plugin 2.2.0
Android Studioを2.2に、Gradleを2.2にアップグレードした後、同じ問題が発生しました。ビルドの最後に実行する必要のあるタスクcopyApkがあります。 、現在機能しているもののみを投稿します。
tasks.create(name: 'copyApk', type: Copy) {
from 'build/outputs/apk/myapp-official-release.apk'
into '.../mobile'
rename('myapp-official-release.apk', 'myapp.apk')
}
tasks.whenTaskAdded { task ->
if (task.name == 'assembleRelease') {
task.dependsOn 'copyApk'
}
}
Gradleコンソールは、最後のタスクassembleReleaseの直前に、packageOfficialRelease、assembleOfficialReleaseの直後にcopyApkが実行されたことを示しています。 「公式」はアプリのフレーバーです。私は this SO post から回避策を得ました。基本的にあなたの便宜のためにここに答えをコピーしました。すべてのクレジットはその投稿の著者に帰属します。
あなたはこれを行うことができます:
task copyApk(dependsOn: "assembleRelease") << {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
buildTypes {}メソッド内に、このコードを配置しました。
task setEnvRelease << {
ant.propertyfile(
file: "src/main/assets/build.properties") {
entry(key: "EO_WS_DEPLOY_ADDR", value: "http://PRODUCTION IP")
}
}
task setEnvDebug << {
ant.propertyfile(
file: "src/main/assets/build.properties") {
entry(key: "EO_WS_DEPLOY_ADDR", value: "http://DEBUG IP TEST")
}
}
tasks.whenTaskAdded { task ->
if (task.name == 'assembleDebug') {
task.dependsOn 'setEnvDebug'
} else if (task.name == 'assembleRelease') {
task.dependsOn 'setEnvRelease'
}
}