2016-04-28 26 views
18

Chúng tôi đang tạo một số thư viện, cơ bản cho API của chúng tôi, rằng chúng tôi sẽ làm cho cuộc sống dễ dàng hơn cho các nhà phát triển bên ngoài của chúng tôi.Phụ thuộc transitive cho thư viện aar cục bộ

Vì vậy, chúng tôi đã tạo dự án thư viện mới và đặt Retrofit và một số thư viện khác làm phụ thuộc.

dependencies { 
    compile 'com.android.support:appcompat-v7:23.3.0' 
    compile 'com.google.code.gson:gson:2.6.2' 
    compile 'com.squareup.retrofit2:retrofit:2.0.1' 
    compile 'com.squareup.retrofit2:converter-gson:2.0.1' 
    compile 'com.squareup.okhttp3:okhttp:3.2.0' 
} 

Bây giờ khi chúng tôi tạo, nó tạo ra tệp aar.

Nhưng bây giờ khi chúng tôi đặt tệp aar vào thư mục libs và đặt nó làm phụ thuộc, chúng tôi vẫn phải đặt cùng một sự phụ thuộc vào tệp build.gradle của người dùng. Nó nên được lấy từ thư viện, phải không?

repositories { 
    flatDir { 
     dirs 'libs' 
    } 
} 

dependencies { 
    compile(name: 'ourlibrary', ext: 'aar') { 
     transitive = true; 
    } 
} 

Cách tạo transitive = true hoạt động?

+0

Tìm kiếm giải pháp cho cùng một vấn đề, bạn đã kết thúc bằng cách nào? – yongsunCN

+0

hi, bạn có thể giải quyết vấn đề này không? – Shrikant

Trả lời

30

Các aar tập tin không chứa lồng nhau (hoặc transitive) phụ thuộc nào và không có một tập tin pom trong đó mô tả sự phụ thuộc được sử dụng bởi các thư viện.

Điều đó có nghĩa rằng, nếu bạn đang nhập tệp aar bằng cách sử dụng flatDir repo, bạn cũng phải chỉ định phụ thuộc cũng trong dự án của mình.

Trong trường hợp của bạn, hãy thêm transitive=true không giải quyết được sự cố của bạn vì lý do được mô tả ở trên.

Bạn nên sử dụng kho lưu trữ maven (bạn phải xuất bản thư viện trong kho lưu trữ maven riêng hoặc công khai), bạn sẽ không gặp vấn đề tương tự.
Trong trường hợp này, gradle tải xuống các phụ thuộc bằng tệp pom sẽ chứa danh sách phụ thuộc.

+0

bạn có thể xây dựng trên "bạn phải chỉ định phụ thuộc cũng trong dự án của bạn" – TejjD

+1

Cuối cùng đã đến đây. Có vẻ như bạn phải xuất bản nó ở đâu đó để làm cho công việc 'transitive'. –

+1

Tôi đã dành nhiều ngày cho việc này ... cảm ơn bạn rất nhiều! – suomi35

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