2015-07-31 57 views
5

Tôi đã làm việc trên một thư viện Android (một ứng dụng khách API) sử dụng Retrofit và Joda DateTime.Tệp AAR cục bộ không quản lý các phụ thuộc

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.2.0' 
    compile 'com.squareup.retrofit:retrofit:1.9.0' 
    compile 'joda-time:joda-time:2.8.1' 
} 

Bây giờ thư viện được hoàn thành tôi biên soạn nó thành một tập tin AAR và tôi muốn sử dụng nó trong một ứng dụng, vì vậy tôi đã thêm nó vào thư mục libs của ứng dụng và đưa nó vào file build.gradle như vậy:

dependencies { 
    compile(name:'s3papiandroidclient', ext:'aar') 
    //Some other things 
} 

Tuy nhiên, khi tôi cố gắng để khởi tạo client API từ thư viện, các ứng dụng bị treo khi nói đến gọi đối tượng từ retrofit hoặc DateTime (Ví dụ, retrofit.RestAdapter). Dường như Gradle không đọc các phụ thuộc từ thư viện AAR, do đó không cài đặt Retrofit và DateTime trong ứng dụng của tôi. Tôi đã cố gắng sử dụng thông số transitive=true trên tệp AAR của tôi, không giúp ích gì.

Điểm khác có thể giúp, tôi đã cố tạo tệp POM và phụ thuộc cũng không xuất hiện trong tệp đó. Có vẻ như có điều gì đó đang xảy ra với những thứ này và tôi hoàn toàn bị mắc kẹt trên đó.

Cách giải quyết duy nhất tôi có thể tìm là thêm các phụ thuộc theo cách thủ công từ tệp AAR vào tệp build.gradle của ứng dụng nhưng không có ý nghĩa, tôi cho rằng Gradle có thể tự nhập phụ thuộc!

Kính trọng,

Gyoo.

Trả lời

5

Dường như Gradle không đọc phụ thuộc từ thư viện AAR

Đó là bởi vì không có phụ thuộc trong một tập tin AAR.

tôi đã cố gắng để tạo ra một tập tin POM, và sự phụ thuộc không xuất hiện trong nó, hoặc

Sau đó, có một vấn đề trong cách bạn đang tạo ra các tập tin POM. Ngoài ra, AFAIK, bạn sẽ cần phải đặt AAR và tệp POM của nó trong một kho lưu trữ, để Gradle nhận ra POM và sử dụng thông tin phụ thuộc bên trong nó.

+1

@Gyoo: FWIW, [đây là một trong các thư viện của tôi] (https://github.com/commonsguy/cwac-presentation) có sự phụ thuộc vào [một thư viện khác của tôi] (http: // github. com/commonsguy/cwac-layouts). Tôi sử dụng plugin 'maven' và nhiệm vụ' uploadArchives' để tạo POM và sao chép nó cùng với AAR vào một kho lưu trữ cục bộ (sau đó tôi đồng bộ hóa với kho lưu trữ công khai của riêng mình trên Amazon S3). – CommonsWare

Các vấn đề liên quan