2014-04-13 14 views
5

Witam Mam projekt biblioteki Androida, który generuje roczne sprawozdanie z działalności.Biblioteka Android AAR w zależności od innej biblioteki

Wszystko jest dobre, ale kiedy używam AAR w innym projekcie otrzymuję ten błąd:

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

USR która korzysta Picassa, czy jest możliwe, aby wyeksportować zależnościami AAR jak również podczas generowania jednego ?

+0

W jaki sposób korzystasz z rocznego sprawozdania z działalności w innym projekcie? – CommonsWare

+0

Jak to: 'repozytoria { flatDir { 'libs' dirs} mavenCentral() }' a następnie włączając je za pomocą zwykłego formatu GroupID – redDragonzz

+0

To ma być oczekiwane zachowanie Przypuszczam: https: // groups.google.com/forum/#!topic/adt-dev/0ZAP8AVUZVw! Myślę, że muszę pobrać słoik picasso, a następnie gradle włącza go automatycznie, w przeciwnym razie nie robi. Wypróbuje i opublikuje odpowiedź. – redDragonzz

Odpowiedz

6

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

UWAGA: następujący przepis działa, ale prawdopodobnie może wykorzystać poprawę, jak ja daleko od eksperta Maven. W zeszłym roku zastosowałem to podejście do użytku z moimi bibliotekami CWAC.

Krok 1: Dodaj classpath 'com.github.dcendents:android-maven-plugin:1.0' do buildscriptdependencies bloku w projekcie biblioteki build.gradle pliku. Dodaj także oświadczenia version i group, aby przekazać te informacje o swoim rocznym sprawozdaniu z działalności.

Krok # 2: Użyj gradle install do kompilacji AAR i zainstalowania go w domyślnym lokalnym repozytorium Maven.

Krok 3: Zazwyczaj dodajemy mavenLocal() do bloku dependencies w projekcie aplikacji, aby pobrać AAR za pomocą jego identyfikatora artefaktu. To może znowu działać, chociaż zostało przerwane na chwilę. Zamiast tego zastosuj maven { url "${System.env.HOME}/.m2/repository" } jako krótkoterminowe obejście.

Tak więc, na przykład, biblioteka projekt build.gradle plik może zawierać:

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 
} 

byłoby użyć gradle install opublikować JAR do lokalnego repo Maven. Twój projekt aplikacja musiałaby wówczas następujące rzeczy w swojej build.gradle:

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 
} 

gdzie można wymienić:

  • some.likely.group.name.goes.here coś

  • 0.4.0 z numerem wersji w formacie XYZ

  • name-of-library będzie nazwą katalogu, który zawiera projekt biblioteki Androida (np. presentation lub foo)

+0

Jedna ważna rzecz dla każdego, kto nadal używa tej metody, jak ja: od tego czasu został zaktualizowany dla nowszych wersji gradle. Proszę odnieść się do nowego GitHub tutaj: https://github.com/dcendents/android-maven-gradle-plugin i upewnij się, że gradle jest co najmniej 2.4, zmieniając 'gradle-wrapper.properties' za pomocą instrukcji tutaj: http: // tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0 – anddev84

+0

Proszę, jak korzystać z 'gradle install'? Zainstalowałem gradle dla java na windows i wypróbowałem 'gradle install', otrzymałem ten błąd' Task 'install' nie został znaleziony w głównym projekcie 'bin''. –

+0

@WilliamKinaan: Ta odpowiedź ma 2,5 roku. Polecam znalezienie nowszego rozwiązania. – CommonsWare

Powiązane problemy