web-dev-qa-db-ja.com

Android Studio 2.2 / gradle plugin 2.2.0への更新後:「不明なプロパティ 'assembleRelease'を取得できませんでした」

Android Studioversion 2.2に、そしてGradle-plugin2.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ファイルを移動/名前変更するだけです。

アドバイスありがとうございます!タンゲン

25
tangens

タスクを少し書き換えて、次のようにしてみてください。

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()<< {...}

15
tasks.whenTaskAdded { task ->
  if (task.name == 'assembleRelease') {
    task.finalizedBy 'yourRenameTasks'
  }
}
16
HalZhang

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

詳細: 不明なプロパティ 'assembleDebug'(2.2-beta)を取得できませんでした

7
w7849516230

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 から回避策を得ました。基本的にあなたの便宜のためにここに答えをコピーしました。すべてのクレジットはその投稿の著者に帰属します。

5
Hong

あなたはこれを行うことができます:

task copyApk(dependsOn: "assembleRelease") << {
    file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
0
许大卫

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'
            }
        }
0
Arthur Melo