2014-04-13 33 views
5

Xin chào Tôi có Dự án Thư viện Android sản xuất AAR.Thư viện Android AAR tùy thuộc vào thư viện khác

Tất cả là tốt nhưng khi tôi sử dụng AAR trong một dự án khác tôi nhận được lỗi này:

java.lang.NoClassDefFoundError: com.squareup.picasso.Picasso 

Các AAR tận dụng picasso, là nó có thể xuất khẩu các phụ thuộc của AAR cũng khi tạo một ?

+0

Bạn sử dụng AAR trong dự án khác như thế nào? – CommonsWare

+0

Như thế này: 'kho { flatDir { 'libs' dirs} mavenCentral() } ' và sau đó bao gồm cả họ bằng cách sử dụng thông thường định dạng groupId – redDragonzz

+0

Đây được coi là hành vi dự kiến ​​Tôi cho rằng: https: // groups.google.com/forum/#!topic/adt-dev/0ZAP8AVUZVw! Tôi nghĩ rằng tôi phải tải về các picasso jar và sau đó gradle sẽ bao gồm nó tự động, nếu không nó không. Sẽ cho nó một thử và gửi một câu trả lời – redDragonzz

Trả lời

6

How can one go about setting up a local maven repo.

CẢNH BÁO: các công thức sau đây hoạt động, nhưng có lẽ có thể sử dụng cải tiến, như tôi xa từ một chuyên gia về Maven. Tôi đã đưa ra phương pháp này vào năm ngoái để sử dụng với các thư viện CWAC của tôi.

BướC# 1: Thêm classpath 'com.github.dcendents:android-maven-plugin:1.0' vào khối buildscriptdependencies trong dự án thư viện build.gradle tệp của bạn. Đồng thời thêm các câu hỏi versiongroup để cung cấp thông tin đó về AAR của bạn.

BướC# 2: Sử dụng gradle install để biên dịch AAR và cài đặt AAR trong kho lưu trữ Maven cục bộ mặc định.

BướC#: Thông thường, bạn sẽ thêm mavenLocal() vào khối dependencies của dự án ứng dụng của bạn để nhận AAR qua ID tạo tác của nó. Điều đó có thể hoạt động trở lại, mặc dù nó đã bị hỏng một chút. Thay vào đó, hãy sử dụng maven { url "${System.env.HOME}/.m2/repository" } làm cách giải quyết ngắn hạn.

Vì vậy, ví dụ, thư viện dự án build.gradle tập tin của bạn có thể chứa:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.9.+' 
     classpath 'com.github.dcendents:android-maven-plugin:1.0' 
    } 
} 

apply plugin: 'android-library' 
apply plugin: 'android-maven' 

version '0.4.0' 
group 'some.likely.group.name.goes.here' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.squareup.picasso:picasso:2.2.0' 
    compile fileTree(dir: 'libs', include: '*.jar') 
} 

android { 
    // as normal 
} 

Bạn sẽ sử dụng gradle install công bố JAR để repo Maven địa phương của bạn. dự án ứng dụng của bạn sau đó sẽ có những thứ sau trong build.gradle của nó:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.9.+' 
    } 
} 

apply plugin: 'android' 

repositories { 
    mavenCentral() 
    maven { url "${System.env.HOME}/.m2/repository" } // mavenLocal() 
} 

dependencies { 
    compile 'some.likely.group.name.goes.here:name-of-library:0.4.0' 
} 

android { 
    // as normal 
} 

nơi bạn thay thế:

  • some.likely.group.name.goes.here với một cái gì đó

  • 0.4.0 với một số phiên bản trong định dạng XYZ

  • name-of-library sẽ là tên thư mục chứa dự án thư viện Android (ví dụ: presentation hoặc foo)

+0

Một điều quan trọng cần lưu ý đối với bất kỳ ai vẫn sử dụng phương pháp này như tôi: điều này đã được cập nhật cho các phiên bản gradle mới hơn. Vui lòng tham khảo GitHub mới tại đây: https://github.com/dcendents/android-maven-gradle-plugin và đảm bảo rằng gradle ít nhất là 2,4 bằng cách thay đổi 'gradle-wrapper.properties' bằng cách sử dụng hướng dẫn tại đây: http: // tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0 – anddev84

+0

Làm thế nào để sử dụng 'gradle install'? Tôi đã cài đặt gradle cho java trên windows và cố gắng 'gradle install', tôi gặp lỗi này 'Task' install 'không tìm thấy trong root project' bin'.' –

+0

@WilliamKinaan: Câu trả lời này là 2,5 năm tuổi. Tôi khuyên bạn nên tìm một giải pháp mới hơn. – CommonsWare

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