Jak utworzyć pakiet biblioteki wersji systemu Android (AAR) w Android Studio (bez debugowania)

81

Zbudowałem pakiet biblioteki dla systemu Android (aar), a wynik kompilacji jest tworzony w folderze „.. \ app \ build \ output \ aar”. Plik w tym folderze nazywa się „app-debug.aar”, więc myślę, że został zbudowany w trybie debugowania, więc chciałbym wiedzieć, jak wygenerować zbudowaną wersję, czyli „app-release.aar”. Jak mogę to zrobić? Czy można również wygenerować kompilację z inną niestandardową nazwą, na przykład „myCustomAppName-release.aar” zamiast „app-release.aar”.

Ralph
źródło
2
Czy znalazłeś rozwiązanie tego problemu? Mam ten sam problem i nie mogę znaleźć żadnej pomocy.
Belurd

Odpowiedzi:

120

W Android Studio 1.2+ dostępne jest pełne gradlemenu z listą wszystkich dostępnych gradlezadań.

Znalazłem to menu po prawej stronie IDE z włączonymi domyślnymi opcjami.

Menu gradle jest domyślnie po prawej stronie IDE ...

Kliknij prawym przyciskiem żądane zadanie i kliknij „Uruchom”.

Kliknij prawym przyciskiem myszy zadanie, które chcesz, kliknij „URUCHOM”

jiminikiz
źródło
1
To działa dla mnie, ale zauważyłem, że kompilacja ze standardowego menu „build” również zaczęła działać, gdy uruchomiłem polecenia cmd line grade sugerowane przez użytkownika 1624552 w komentarzach dla innej odpowiedzi tutaj. Przydałoby się, gdyby ktoś, kto nie uruchomił gradle w linii poleceń, może potwierdzić, że to podejście menu bocznego gradle działa również, ponieważ zauważyłem, że linia poleceń pobrała coś, co wyglądało jak nowa wersja gradle w moim przypadku, zanim została uruchomiona i zastanawiam się, czy to też jest wymaganym krokiem.
Mick,
1
Przy okazji, dobra robota, znajdowanie tego !!! Jeśli ktoś z Google się tym zainteresuje, byłoby miło wiedzieć, czy są jakieś plany, aby połączyć / zracjonalizować / wyjaśnić górne menu Build, to „nowe” menu boczne Gradle, widok Warianty kompilacji itp.?
Mick,
Tak, zdecydowanie. Ja również uruchomiłem gradle z wiersza poleceń, tak jak sugerowały inne odpowiedzi, dopóki nie znalazłem tego menu. Nie jestem pewien, czy uruchomienie go z linii poleceń jest wymagane przed użyciem bocznego menu ... Co ciekawe, każde zadanie uruchamiane z bocznego menu gradle staje się domyślną akcją „Uruchom”. Innymi słowy, ikona zielonej strzałki i menu Uruchom wskazują na ostatnio uruchomione zadanie gradle. Przydatne :)
jiminikiz
tylko jedno pytanie, czy podczas eksportowania plików aar w trybie wydania będzie zawierał najnowsze właściwości programu proguard?
abh22ishek
1
Tak, jeśli uruchomisz assemblezadanie, zastosuje ono wszelkie reguły progaurów, które zdefiniowałeś w swoim projekcie.
jiminikiz
10

Zmierzyłem się z tym problemem w AS 2.3.3 i rozwiązałem go, zmieniając wariant kompilacji modułu na wydanie i budując go ponownie:

wprowadź opis obrazu tutaj

Veneet Reddy
źródło
9

Ten problem można już rozwiązać za pomocą odpowiedzi, takich jak wykonaj

./gradlew assembleRelease

lub wybierz assembleRelease z menu Gradle w Android Studio . Jednak dla kompletności, w Android Studio 1.5.1 (i prawdopodobnie także starszych wersjach) można zbudować wersję .aar w wersji do wydania, wybierając Build -> „Build APK” w Android Studio . Wydaje się, że wykonuje assembleRelease. Jeśli Twój projekt zawiera tylko projekt biblioteki, nie prosi o żadne informacje dotyczące podpisu.

diidu
źródło
8

1. dodaj następujący skrypt do tagu {} systemu Android w pliku build.gradle, aby wygenerować kompilację wydania:

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. uruchom polecenie „gradle clean build” w linii poleceń.

codezjx
źródło
Przepraszam, jestem nowicjuszem w programowaniu na Androida. Czy konieczne jest podpisanie pakietu biblioteki systemu Android (aar), aby uzyskać wynik wydania? Jak mogę wygenerować własny magazyn kluczy?
Ralph,
W moim projekcie biblioteki, \ build \ output \ aar jest już generowane: XX-debug.aar, XX-release.aar. I dlaczego znalazłeś plik .arr? Jeśli chcesz skorzystać z biblioteki, po prostu dodaj następujący skrypt w swoim build.gradle: dependencies {compile project (': YourLibraryProject')}
codezjx
1
Chcę w przyszłości używać tej biblioteki w moich aplikacjach na Androida. To jest biblioteka i chcę uzyskać wyniki jej wydania, ale nie rozumiem dlaczego, ale otrzymuję tylko XX-debug.aar, a nie XX-release.aar w folderze „\ app \ build \ output \ aar” mojej biblioteki.
Ralph,
5
Z okna terminala, będąc w folderze projektu, wykonałem następujące polecenia: „./gradlew clean” i „./gradlew aR”, a teraz „XX-release.aar” jest generowany do „.. \ app \ build \ output \ aar "folder. Jak mogę zrobić to samo w Android Studio? to znaczy poinstruowanie Android Studio, aby również złożyło wydanie.
Ralph,
1
Zwykle wszystko, co musisz zrobić, to zbudować projekt w Android Studio, ale mam ten sam problem w kilku aplikacjach. Więc zrobienie tego w terminalu jest jedynym rozwiązaniem.
CodyMace
8

Dzięki Android Studio 3.0 łatwiej jest wygenerować plik AAR. Z opcji Gradle, sprawdź opcję, jak pokazano na rysunku wprowadź opis obrazu tutaj

leeCoder
źródło
W moim projekcie nie widzę opcji wydania asemblera.
Gyan Swaroop Awasthi
kiedy importuję moje wydanie .aar lib w projekcie, pojawia się błąd typu „AAPT: błąd: atrybut ... nie znaleziono” @leeCoder
Shomu
4

Możesz użyć wiersza poleceń

./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

Alternatywnie możesz użyć interfejsu użytkownika AndroidStudio

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

yoAlex5
źródło
jaka jest różnica między ./gradlew <moduleName>:assemble<build_variant>i ./gradlew <moduleName>:bundle<build_variant>Aar?
rupesh
3

Skonfiguruj swój projekt jako bibliotekę systemu Android
W build.gradlepliku: plugin: 'com.android.library'
Możesz zobaczyć dane wyjściowe w: build/outputs/aar/[your module].
Zobacz także to łącze

NickF
źródło
3

Kolejne 2-częściowe pytanie, w którym nikt nie odpowiada na drugą część ...

Oto proste odpowiedzi dla przyszłych pokoleń:

Część 1 Jak stworzyć tylko wydanie*release.aar ?

Uruchom w Android Studio terminal(lub dowolnym terminalu w folderze projektu):

./gradlew assembleRelease

Nie musisz podpisywać konfiguracji do takiego zadania.

Część 2 Jak zmienić nazwę biblioteki wyjściowej naAnotherLibraryName-release.aar ?

Dodaj do swojego modułu gradle.build:

android{
    project.archivesBaseName = "AnotherLibraryName"
}
lukassos
źródło
0

dla mnie po prostu naprawienie błędu układu w bibliotece, który nie powodował błędu kompilacji (brak wtyczki androidx), naprawił go i <lib>-release.aarpojawił się obok folderu <lib>-debug.aarin build/outputs/aar/.

Joe
źródło