So erstellen Sie ein Release-Android-Bibliothekspaket (aar) in Android Studio (nicht debuggen)

81

Ich habe mein Android-Bibliothekspaket (aar) erstellt und das Ergebnis des Builds wird im Ordner ".. \ app \ build \ output \ aar" erstellt. Die Datei in diesem Ordner heißt "app-debug.aar". Ich denke, sie wurde im Debug-Modus erstellt, daher möchte ich wissen, wie die erstellte Version, dh "app-release.aar", generiert wird. Wie kann ich das machen? Es ist auch möglich, den Build mit einem anderen benutzerdefinierten Namen zu generieren, z. B. "myCustomAppName-release.aar" anstelle von "app-release.aar".

Ralph
quelle
2
Haben Sie eine Lösung für dieses Problem gefunden? Ich habe das gleiche Problem und kann keine Hilfe finden.
Belurd

Antworten:

120

In Android Studio 1.2+ gibt es ein vollständiges gradleMenü, in dem alle verfügbaren gradleAufgaben aufgelistet sind .

Ich fand dieses Menü auf der rechten Seite der IDE mit aktivierten Standardoptionen.

Das Gradle-Menü befindet sich standardmäßig auf der rechten Seite der IDE ...

Klicken Sie mit der rechten Maustaste auf die gewünschte Aufgabe und klicken Sie auf "Ausführen".

Klicken Sie mit der rechten Maustaste auf die gewünschte Aufgabe und klicken Sie auf "RUN".

jiminikiz
quelle
1
Dies funktioniert für mich, aber ich habe festgestellt, dass der Build aus dem Standardmenü "Build" auch funktioniert hat, nachdem ich die von user1624552 in Kommentaren vorgeschlagenen cmd-Zeilengradbefehle für eine andere Antwort hier ausgeführt hatte. Es wäre nützlich, wenn jemand, der die Befehlszeilennote nicht ausgeführt hat, bestätigen kann, dass dieser Ansatz für das seitliche Gradle-Menü auch funktioniert, da ich festgestellt habe, dass die Befehlszeile in meinem Fall eine neue Version von gradle heruntergeladen hat, bevor sie ausgeführt wurde, und ich frage mich, ob dies auch der Fall ist ist ein erforderlicher Schritt.
Mick
1
Übrigens, gut gemacht, das zu finden !!! Wenn sich jemand von Google das ansieht, wäre es schön zu wissen, ob es Pläne gibt, das obere Build-Menü, dieses 'neue' Gradle-Seitenmenü und die Build-Varianten-Ansicht usw. zu verknüpfen / zu rationalisieren / zu erklären.
Mick
Ja, auf jeden Fall. Ich lief auch gradle von der Kommandozeile, wie die anderen Antworten vorgeschlagen hatten, bis ich das Menü fand. Ich bin mir nicht sicher, ob es zuerst über die Befehlszeile ausgeführt werden muss, bevor das Seitenmenü verwendet wird. Interessant ist auch, dass jede Aufgabe, die Sie über das Seitengradmenü ausführen, zur Standardaktion "Ausführen" wird. Mit anderen Worten, das grüne Pfeilsymbol und das Menü Ausführen zeigen auf die letzte Run-Gradle-Aufgabe. Nützlich :)
jiminikiz
Nur eine Frage: Wenn Sie AAR-Dateien im Release-Modus exportieren, enthält sie die neuesten Proguard-Eigenschaften?
abh22ishek
1
Ja, wenn Sie die assembleAufgabe ausführen , werden alle in Ihrem Projekt definierten Progaurd-Regeln angewendet.
Jiminikiz
10

Ich habe dieses Problem in AS 2.3.3 gelöst und es gelöst, indem ich die Build-Variante des Moduls geändert habe, um es freizugeben und erneut zu erstellen:

Geben Sie hier die Bildbeschreibung ein

Veneet Reddy
quelle
8

1. Fügen Sie Ihrem android {} -Tag in build.gradle das folgende Skript hinzu, um einen Release-Build zu generieren:

signingConfigs {
    testConfig{
        storeFile file("X:/XXXX/yourkeystore")
        storePassword "yourKeyPassword"
        keyAlias "yourAlias"
        keyPassword "yourAliasPassword"
    }
}

buildTypes{
    release {
        signingConfig  signingConfigs.testConfig
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

2. Führen Sie den Befehl "gradle clean build" in Ihrer Befehlszeile aus.

codezjx
quelle
Entschuldigung, ich bin ein Neuling in der Android-Entwicklung. Ist es unbedingt erforderlich, ein Android-Bibliothekspaket (aar) zu signieren, um die Release-Ausgabe zu erhalten? Wie kann ich meinen eigenen Schlüsselspeicher generieren?
Ralph
In meinem Bibliotheksprojekt wird bereits \ build \ output \ aar generiert: XX-debug.aar, XX-release.aar. Und warum haben Sie eine .arr-Datei benötigt? Wenn Sie eine Bibliothek verwenden möchten, fügen Sie einfach das folgende Skript in build.gradle hinzu: dependencies {compile project (': YourLibraryProject')}
codezjx
1
Ich möchte diese Bibliothek in Zukunft in meinen Android-Apps verwenden. Dies ist eine Bibliothek, und ich möchte ihre Release-Ausgabe erhalten, verstehe aber nicht, warum, aber ich erhalte nur XX-debug.aar und nicht XX-release.aar im Ordner "\ app \ build \ output \ aar" meiner Bibliothek.
Ralph
5
In einem Terminalfenster habe ich einmal im Projektordner die folgenden Befehle ausgeführt: "./gradlew clean" und "./gradlew aR" und jetzt wird "XX-release.aar" in ".. \ app \ build \" generiert gibt den Ordner \ aar "aus. Wie kann ich dasselbe von Android Studio aus tun? Das heißt, Android Studio soll anweisen, das Release ebenfalls zusammenzustellen.
Ralph
1
Normalerweise müssen Sie das Projekt nur in Android Studio erstellen, aber ich habe das gleiche Problem in einigen Apps. Es ist also die einzige Lösung, dies im Terminal zu tun.
CodyMace
8

Dieses Problem von kann bereits mit den Antworten wie Ausführen behandelt werden

./gradlew assembleRelease

oder wählen Sie assembleRelease aus dem Gradle-Menü von Android Studio . Der Vollständigkeit halber kann mit Android Studio 1.5.1 (und wahrscheinlich auch älteren Versionen) die Release-Version einer .aar-Version erstellt werden, indem in Android Studio Build -> "Build APK" ausgewählt wird . Es scheint assembleRelease auszuführen. Wenn Ihr Projekt nur das Bibliotheksprojekt enthält, werden keine Signaturinformationen angefordert.

diidu
quelle
8

Mit Android Studio 3.0 ist es einfacher, eine AAR-Datei zu generieren. Suchen Sie in der Option Gradle nach der im Bild gezeigten Option Geben Sie hier die Bildbeschreibung ein

leeCoder
quelle
In meinem Projekt kann ich die Option zum Zusammenstellen der Freigabe nicht sehen.
Gyan Swaroop Awasthi
Wenn ich meine Version .aar lib in ein Projekt importiere, wird ein Fehler wie "AAPT: Fehler: Attribut ... nicht gefunden" @leeCoder
Shomu
4

Sie können die Befehlszeile verwenden

./gradlew <moduleName>:assemble

./gradlew <moduleName>:assemble<build_variant>
//for example
./gradlew <moduleName>:assembleRelease

//or
./gradlew <moduleName>:bundle<build_variant>Aar
//for example
./gradlew <moduleName>:bundleReleaseAar
//output is located
<project_path>/build/outputs/aar/<module_name>-<build_variant>.aar

Alternativ können Sie die AndroidStudio-Benutzeroberfläche verwenden

View -> Tool Windows -> Gradle
<module_name> -> Tasks -> build or others -> assembleRelease

yoAlex5
quelle
Was ist der Unterschied zwischen ./gradlew <moduleName>:assemble<build_variant>und ./gradlew <moduleName>:bundle<build_variant>Aar?
Rupesh
3

Einrichten Ihres Projekts als Android-Bibliothek
In build.gradleDatei: plugin: 'com.android.library'
Sie können die Ausgabe sehen in: build/outputs/aar/[your module].
Siehe auch diesen Link

NickF
quelle
3

Noch eine zweiteilige Frage, bei der niemand den zweiten Teil beantwortet ...

Für die zukünftigen Generationen gibt es hier einfache Antworten:

Teil 1 Wie erstelle ich nur ein Release *release.aar?

Führen Sie in Android Studio terminal(oder einem beliebigen Terminal in Ihrem Projektordner).:

./gradlew assembleRelease

Für eine solche Aufgabe benötigen Sie keine Signaturkonfiguration.

Teil 2 Wie benenne ich die Ausgabebibliothek um AnotherLibraryName-release.aar?

Fügen Sie Ihrem Modul hinzu gradle.build:

android{
    project.archivesBaseName = "AnotherLibraryName"
}
lukassos
quelle
0

Für mich hat das einfache Beheben eines Layoutfehlers in der Bibliothek, der keinen Kompilierungsfehler verursachte (fehlendes Androidx-Plugin), diesen behoben und wurde <lib>-release.aarneben dem Ordner <lib>-debug.aarin angezeigt build/outputs/aar/.

Joe
quelle