Tạo tệp aar trong Android Studio


173

Tôi muốn tạo một tệp aar cho thư viện của mình trong Android Studio, tôi đã đi với tùy chọn jar nhưng thư viện của tôi có tài nguyên.

Bất kỳ ý tưởng làm thế nào để tạo một tập tin aar từ một thư viện?

Câu trả lời:


225

Nếu thư viện của bạn được thiết lập dưới dạng thư viện Android (nghĩa là nó sử dụng apply plugin: 'com.android.library'câu lệnh trong tệp build.gradle của nó), nó sẽ xuất ra một .aar khi nó được xây dựng. Nó sẽ hiển thị trong thư mục build / output / aar / trong thư mục của mô-đun của bạn.

Bạn có thể chọn loại "Thư viện Android" trong Tệp> Mô-đun mới để tạo Thư viện Android mới.


3
Phiên bản thực sự là bên ngoài của chính AAR. Thông thường bạn sẽ thiết lập tệp pom Maven có thông tin phiên bản.
Scott Barta

1
Tôi có tệp aar trong thư mục libs của thư viện vì vậy nó không được bao gồm trong bản dựng / đầu ra / aar / trực tiếp
Ganesh Jogam

4
tập tin aar xuất hiện trong app / build / output / aar / và không có trong thư mục / build / ở cấp độ dự án! trong trường hợp bạn không tìm thấy nó ...
peresisUser

29
Lưu ý rằng để tạo của tôi aar, tôi phải thực hiện Build > Rebuild Projecttrong Android Studio. Chỉ đơn giản là chạy, gỡ lỗi hoặc APK xây dựng không tạo ra aarcho tôi.
Adam Johns

8
@AdamJohns cách nhanh hơn ./gradlew moduleName:assembleReleasetrong tab thiết bị đầu cuối
Sameer J

158

Truy xuất tệp .aar đã xuất từ ​​các bản dựng cục bộ

Nếu bạn có một mô-đun được xác định là một dự án thư viện Android, bạn sẽ nhận được các tệp .aar cho tất cả các hương vị xây dựng (gỡ lỗi và phát hành theo mặc định) trong build/outputs/aar/thư mục của dự án đó.

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

Nếu các tệp này không tồn tại, hãy bắt đầu xây dựng với

gradlew assemble

cho người dùng macOS

./gradlew assemble

Chi tiết dự án thư viện

Một dự án thư viện có một build.gradletập tin chứa apply plugin: com.android.library. Để tham khảo thư viện này được đóng gói dưới dạng .aartệp, bạn sẽ phải xác định một số thuộc tính như gói và phiên bản.

build.gradleTệp ví dụ cho thư viện (ví dụ này bao gồm obfuscation trong bản phát hành):

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

Tham khảo tệp .aar trong dự án của bạn

Trong dự án ứng dụng của bạn, bạn có thể thả .aartệp này vào libsthư mục và cập nhật build.gradletệp để tham chiếu thư viện này bằng ví dụ dưới đây:

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

Các tùy chọn thay thế để tham chiếu các tệp phụ thuộc cục bộ trong lớp có thể được tìm thấy tại: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

Chia sẻ phụ thuộc bằng maven

Nếu bạn cần chia sẻ các .aartệp này trong tổ chức của mình, hãy kiểm tra maven. Một bài viết hay về chủ đề này có thể được tìm thấy tại: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- thư viện-aar-ngang

Giới thiệu về định dạng tệp .aar

Một tệp aar chỉ là .zipmột phần mở rộng thay thế và nội dung cụ thể. Để biết chi tiết kiểm tra liên kết này về định dạng aar .


11
Câu trả lời tuyệt vời và chi tiết. +1 cho gradlew assemble- điều đó đã giải quyết vấn đề tôi đang gặp phải.
Farbod Salamat-Zadeh

@hcpl Cách chuyển đổi dự án Android của tôi thành tệp .aar
Ana

1
@NaveedAhmad bạn đã thử ./gradlew
hcpl

@NaveedAhmad thì có lẽ bạn đang thực hiện từ vị trí sai hoặc cấu hình lớp của bạn là khác nhau. Bạn có thể thử "xác định vị trí gradlew" nhưng thực sự nếu bạn gặp khó khăn trong việc tìm và thực hiện gradlew thì câu trả lời ngắn gọn này sẽ không giúp bạn
hcpl

Đối với hậu thế: gradlewlà một tập lệnh trong thư mục dự án toplevel .
CodeClown42

11

giống như người dùng hcpl đã nói nhưng nếu bạn không muốn lo lắng về phiên bản của thư viện, bạn có thể làm điều này:

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

như là loại phiền toái của nó phải cập nhật phiên bản mọi lúc. Ngoài ra, nó làm cho việc không lo lắng về không gian tên dễ dàng hơn theo cách này.


5

Sau khi làm theo các bước đầu tiên và thứ hai được đề cập trong câu trả lời của hcpl trong cùng một chủ đề , chúng tôi đã thêm , '* .aar'], dir: 'libs' trong ứng dụng / ứng dụng dựa trên dự án / android-app-dựa trên dự án / ứng dụng / tập tin build.gradle như hình dưới đây:

...

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

...

Phiên bản lớp của chúng tôi là com.android.tools.build:gradle:3.2.1


3

Để tạo AAR

trong khi tạo theo các bước dưới đây.

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

Để tạo AAR

Chuyển đến lớp ở trên cùng bên phải trong studio android theo các bước dưới đây.

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

AAR sẽ được tạo trong bản dựng / đầu ra / aar /

Nhưng nếu chúng tôi muốn AAR được tạo trong thư mục cụ thể trong thư mục dự án với tên bạn muốn, hãy sửa đổi cấp ứng dụng của bạn build.gradlenhư bên dưới

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

Bây giờ nó sẽ tạo thư mục có tên "phát hành" trong thư mục dự án sẽ có AAR.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.