Wenn ich mich nicht irre gradle assemble
, läuft gradle assembleDebug
und gradle assembleRelease
, aber ich glaube gradle build
auch das Gleiche, was sind dann die Unterschiede zwischen beiden?
android
android-gradle-plugin
Bescheidener Student
quelle
quelle
buildRelease
erhalte ich nicht die.apk
Dateien, sondern nur die Protokolldateien. Beim Ausführen bekommeassembleRelease
ich jedoch die.apk
Dateien. Seltsam.Antworten:
Assemble erstellt Ihre Artefakte und Build erstellt Ihre Artefakte mit zusätzlichen Überprüfungen.
build
hängt davon abassemble
, sobuild
ist eine Art Obermenge vonassemble
Mit dem
--dry-run
Flag können Sie einen Blick auf die Aufgaben werfen, die ausgeführt werden . z.Bgradlew build --dry-run
Sie werden das abgesehen von
assemble
auch sehenlint
undtest
werden ausgeführt.quelle
lint
undtest
Von
gradle tasks --all
:Build tasks ----------- assemble - Assembles the outputs of this project. build - Assembles and tests this project.
build
ist effektivassemble
+check
(undcheck
isttest
+ alle Flusenaufgaben).quelle
Es ist wahr, dass
gradle tasks
es so aussieht, als wäre dasbuild
eine Obermenge vonassemble
, einschließlich Tests. Aber (!) Aus meiner kurzen Erfahrung sieht es wirklich so aus, als wäre das nicht der Fall.Also habe ich diese beiden Befehle in der Befehlszeile mit dem Gradle-Wrapper mit dem Flag --scan ausgeführt, nachdem ich jedes Mal sauber ausgeführt habe. Dies ist der Vergleich:
assembleDebug
ich alle erstellten Dateien erhalten -*.apk
und*.aar
Dateien.buildDebug
ich keine dieser Dateien.assembleDebug
- 109 AufgabenbuildDebug
- 91 AufgabenassembleDebug
- 172 aus 20 KonfigurationenbuildDebug
- 104 aus 18 KonfigurationenassembleDebug
2 meiner 3 Unterprojekte (Java-Bibliotheken, keine App) eine weitere Konfiguration gibt, die aufgerufen wirdlintClassPath
. Diese Konfiguration fehlt inbuildDebug
.buildDebug
keineassembleDebug
Aufgabe aufgerufen undassembleDebug
keinebuildDebug
Aufgaben aufgerufen .Build -> Make Project
) in meinem Scan sehe, dass der tatsächlich ausgeführte Befehl der warassembleDebug
. Genauer gesagt lief es:app:assembleDebug
.Wie Sie sehen, verstehe ich die Unterschiede selbst nicht wirklich, aber das habe ich herausgefunden. Wenn jemand es mir und den anderen Benutzern, die hier lesen, erklären kann, könnte es großartig sein :) Danke!
quelle
Es gibt widersprüchliche Informationen darüber, ob
build
davon abhängen sollassemble
.Auf der einen Seite zeigt Gradle verstehen: Der Build-Lebenszyklus zeigt eine grafische Darstellung der Aufgabenabhängigkeiten, von denen
build
undassemble
unabhängig sind:Im Gegensatz dazu zeigt das Gradle-Benutzerhandbuch für das Java-Plugin , dass dies zumindest für Java-Projekte von Folgendem
build
abhängtassemble
:Dies widerspricht der Grafik aus "Gradle verstehen". Vielleicht implementiert das Android-Plugin Build / Assemble-Aufgaben anders als das Java-Plugin? Oder dieses Verhalten hat sich in einer Version von Gradle geändert.
quelle
Welche zusätzlichen Schecks? Ich führe die Aufgaben aus, damit Sie nicht:
:app:lint SKIPPED :app:bundleDebugClasses SKIPPED :app:kaptGenerateStubsDebugUnitTestKotlin SKIPPED :app:kaptDebugUnitTestKotlin SKIPPED :app:compileDebugUnitTestKotlin SKIPPED :app:preDebugUnitTestBuild SKIPPED :app:javaPreCompileDebugUnitTest SKIPPED :app:compileDebugUnitTestJavaWithJavac SKIPPED :app:processDebugUnitTestJavaRes SKIPPED :app:testDebugUnitTest SKIPPED :app:bundleReleaseClasses SKIPPED :app:kaptGenerateStubsReleaseUnitTestKotlin SKIPPED :app:kaptReleaseUnitTestKotlin SKIPPED :app:compileReleaseUnitTestKotlin SKIPPED :app:preReleaseUnitTestBuild SKIPPED :app:javaPreCompileReleaseUnitTest SKIPPED :app:compileReleaseUnitTestJavaWithJavac SKIPPED :app:processReleaseUnitTestJavaRes SKIPPED :app:testReleaseUnitTest SKIPPED :app:test SKIPPED :app:check SKIPPED :app:build SKIPPED
Wie Sie sehen können, werden
build
mehr Aufgaben ausgeführt alsassemble
. Wielint
,test
undcheck
Aufgaben.Sie können die vollständigen Aufgaben hier referenzieren. Der ursprüngliche Text ist eine
build
Aufgabe, während der geänderte Text eineassemble
Aufgabe ist.Verwendetes Projekt: Android Sunflower GitHub
quelle