2016-09-20 6 views
25

Nach der Aktualisierung Android Studio zu Version 2.2 und die Gradle-Plugin zu 2.2.0 "nicht unbekannt Eigenschaft 'assembleRelease' bekommen konnte" Ich erhalte folgende Fehlermeldung:Nach Update auf Android Studio 2.2/gradle Plugin 2.2.0:

"Konnte die Eigenschaft 'assembleRelease' für das Projekt ': app' vom Typ org.gradle.api.Project nicht erhalten."

Wenn ich die Plugin-Version zurück zu 2.1.3 ändern, funktioniert der Code immer noch, aber das ist keine langfristige Option für mich.

Mein Code:

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") 
} 

Hinweis: project.ext.androidVersionCode ist eine Variable definiert other und enthält eine Build-Nummer. Der Code in assembleRelease.doLast soll nur die generierte apk-Datei verschieben/umbenennen.

Vielen Dank für Ihre Ratschläge! Tangens

+0

Könnten Sie mehr Code zur Verfügung stellen? –

+0

Ich habe einige Änderungen vorgenommen, um klarer zu machen, was ich machen möchte. – tangens

+2

Werfen Sie einen Blick darauf: http://StackOverflow.com/a/38569576/2652124 Um die Aufgabe zu finden, können Sie die Option In Pfad suchen verwenden, wie der Kommentar der Antwort sagt. –

Antwort

15

Sie können Ihre Aufgabe ein wenig umschreiben und versuchen wie folgt aus:

task renameBuildTask() << { 
    file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk") 
    dependsOn 'assembleRelease' 
} 

Sie können auch this Frage prüfen besseres Verständnis zu bekommen.

EDIT

Wie gesagt @tangens in einem Kommentar:

It works when I replace the call gradle assemble by e.g. gradle renameBuildTask. Thank you! The answer contains an error. Correct would be: task renameBuildTask() << { ... }

+1

Es funktioniert, wenn ich den Anruf * Grapple Assemble * durch z. * Gradle renameBuildTask *. Vielen Dank! Die Antwort enthält einen Fehler. Richtig wäre: 'task renameBuildTask() << { ... }' – tangens

+1

Wo steckst du das, in ** app ** s build.gradle datei? Ich erhalte einen Fehler: 'Keine Signatur der Methode java.lang.String.dependsOn() ist für Argumenttypen anwendbar. –

14
tasks.whenTaskAdded { task -> 
    if (task.name == 'assembleRelease') { 
    task.finalizedBy 'yourRenameTasks' 
    } 
} 
+0

Wo setzt du das - in das ** app ** -Modul oder das oberste Projektverzeichnis? –

+0

@IgorGanapolsky App-Modul – HalZhang

+0

Es tut nichts für mich, wenn Sie die grüne Run-Taste drücken. –

5

ich das gleiche Problem nach dem Upgrade Android Studio 2.2 und Gradle bis 2,2 hatte. Ich habe Aufgabe copyApk, die am Ende des Gebäudes ausgeführt werden muss. Der Kürze halber lassen Sie mich überspringen, was vorher arbeitete, und geben nur, was jetzt funktioniert:

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 Konsole zeigt copyApk ausgeführt wurde am Ende nach packageOfficialRelease, assembleOfficialRelease, kurz vor der letzten Aufgabe assembleRelease. "Offiziell" ist ein Geschmack der App. Ich habe die Problemumgehung von this SO post. Ich habe die Antwort hier im Wesentlichen für Ihre Bequemlichkeit kopiert. Alle Credits gehen an den Autor dieses Posts.

+0

Mit welcher Gradle-Datei haben Sie diese Aufgaben? –

+1

In der build.gradle der App. – Hong

0

Sie können dies tun:

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

es funktioniert nicht –

6

vielleicht Code in afterEvaluate wickeln {} wird die Arbeit sein:

afterEvaluate { 
    assembleRelease.doLast { 
     file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk") 
    } 
} 

gradle-2.14.1 und android gradle Plugin 2.2.0

Details: Could not get unknown property 'assembleDebug' (2.2-beta)

0

innerhalb buildTypes {} Methode, ich diesen Code setzen: funktionierte wie ein Charme

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' 
      } 
     } 
Verwandte Themen