Utwórz plik aar w Android Studio

173

Chciałbym utworzyć plik aar dla mojej biblioteki w Android Studio, wybrałbym opcję jar, ale moja biblioteka ma zasoby.

Masz pomysł, jak utworzyć plik aar z biblioteki?

AndroidEnthusiast
źródło

Odpowiedzi:

225

Jeśli twoja biblioteka jest skonfigurowana jako biblioteka systemu Android (tj. Używa apply plugin: 'com.android.library'instrukcji w swoim pliku build.gradle), po zbudowaniu wyświetli .aar. Pojawi się w kompilacji / wyjściach / aar / katalogu twojego modułu.

Możesz wybrać typ „Biblioteka Androida” w Plik> Nowy moduł, aby utworzyć nową bibliotekę Androida.

Scott Barta
źródło
3
Wersjonowanie jest naprawdę zewnętrzne w stosunku do samego AAR. Zwykle tworzysz plik pom Maven, który zawiera informacje o wersji.
Scott Barta
1
Mam plik aar w folderze libs biblioteki, więc nie jest on uwzględniony w kompilacji / wyjściach / aar / bezpośrednio
Ganesh Jogam
4
aar pojawił się w app / build / output / aar /, a nie w / build / folder na poziomie projektu! gdybyś go nie znalazł ...
peresisUser
29
Zauważ, że aby wygenerować mój aar, musiałem zrobić Build > Rebuild Projectw Android Studio. Po prostu uruchomienie, debugowanie lub utworzenie pliku APK nie wygenerowało aardla mnie pliku.
Adam Johns,
8
@AdamJohns szybszy sposób ./gradlew moduleName:assembleReleasena karcie terminala
Sameer J
159

Pobierz wyeksportowany plik .aar z lokalnych kompilacji

Jeśli masz moduł zdefiniowany jako projekt biblioteki systemu Android, otrzymasz pliki .aar dla wszystkich wersji kompilacji (domyślnie debugowanie i wydanie) w build/outputs/aar/katalogu tego projektu.

your-library-project
    |- build
        |- outputs
            |- aar
                |- appframework-debug.aar
                 - appframework-release.aar

Jeśli te pliki nie istnieją, rozpocznij kompilację z rozszerzeniem

gradlew assemble

dla użytkowników macOS

./gradlew assemble

Szczegóły projektu biblioteki

Projekt biblioteki zawiera build.gradleplik zawierający apply plugin: com.android.library. Aby uzyskać informacje o tej bibliotece spakowanej jako .aarplik, musisz zdefiniować niektóre właściwości, takie jak pakiet i wersja.

Przykładowy build.gradleplik biblioteki (ten przykład obejmuje zaciemnianie w wersji):

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 1
        versionName "0.1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

Odwołaj się do pliku .aar w swoim projekcie

W projekcie aplikacji możesz upuścić ten .aarplik w libsfolderze i zaktualizować build.gradleplik, aby odwoływał się do tej biblioteki, korzystając z poniższego przykładu:

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs' //this way we can find the .aar file in libs folder
    }
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.0"

    defaultConfig {

        minSdkVersion 14
        targetSdkVersion 20
        versionCode 4
        versionName "0.4.0"

        applicationId "yourdomain.yourpackage"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
        }
    }
}

dependencies {
    compile 'be.hcpl.android.appframework:appframework:0.1.0@aar'
}

Alternatywne opcje odwoływania się do lokalnych plików zależności w gradle można znaleźć pod adresem : http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

Udostępnianie zależności za pomocą maven

Jeśli chcesz udostępnić te .aarpliki w swojej organizacji, odwiedź stronę Maven. Miły opis na ten temat można znaleźć pod adresem : https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- biblioteka-aar-w poprzek

Informacje o formacie plików .aar

Plik aar to po prostu plik .zipz alternatywnym rozszerzeniem i określoną zawartością. Aby uzyskać szczegółowe informacje, sprawdź to łącze dotyczące formatu aar .

hcpl
źródło
11
Wspaniała i szczegółowa odpowiedź. +1 za gradlew assemble- to rozwiązało problem, który miałem.
Farbod Salamat-Zadeh
@hcpl Jak przekonwertować mój projekt na Androida do pliku .aar
Ana,
1
@NaveedAhmad czy próbowałeś ./gradlew
hcpl
@NaveedAhmad, to prawdopodobnie wykonujesz z niewłaściwej lokalizacji lub twoja konfiguracja gradle jest inna. Możesz spróbować „zlokalizuj gradlew”, ale naprawdę, jeśli masz problemy ze znalezieniem i wykonaniem gradlewu, ta krótka odpowiedź Ci nie pomoże
hcpl
Dla potomnych: gradlewto skrypt w katalogu najwyższego poziomu projektu .
CodeClown42
11

tak jak powiedział użytkownik hcpl, ale jeśli nie chcesz się martwić o wersję biblioteki, możesz to zrobić:

dependencies {
    compile(name:'mylibrary', ext:'aar')
}

to trochę irytujące, że trzeba aktualizować wersję za każdym razem. W ten sposób ułatwia to również nie martwienie się o przestrzeń nazw.

j2emanue
źródło
5

Po wykonaniu pierwszego i drugiego kroku wymienionego w odpowiedzi hcpl w tym samym wątku , dodaliśmy „* .aar”], dir: „libs” w naszym projekcie-android-app-project-on-gradle / app / build.gradle, jak pokazano poniżej:

...

dependencies {
       implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

...

Nasza wersja gradle to com.android.tools.build:gradle:3.2.1

Dhananjay M
źródło
3

Aby utworzyć AAR

podczas tworzenia wykonaj poniższe kroki.

File->New->New Module->Android Library and create.

Aby wygenerować AAR

Przejdź do gradle w prawym górnym okienku w Android Studio, wykonaj poniższe kroki.

Gradle->Drop down library name -> tasks-> build-> assemble or assemble release

AAR zostanie wygenerowany w build / output / aar /

Ale jeśli chcemy, aby AAR był generowany w określonym folderze w katalogu projektu o żądanej nazwie, zmodyfikuj poziom aplikacji, build.gradlejak poniżej

defaultConfig {
    minSdkVersion 26
    targetSdkVersion 28
    versionCode System.getenv("BUILD_NUMBER") as Integer ?: 1
    versionName "0.0.${versionCode}"


    libraryVariants.all { variant ->

        variant.outputs.all { output ->
            outputFileName = "/../../../../release/" + ("your_recommended_name.aar")
        }
    }
}

Teraz utworzy folder o nazwie „release” w katalogu projektu, który będzie miał AAR.

Tarun A
źródło