Eksperymentowałem z nowym systemem kompilacji Androida i napotkałem mały problem. Skompilowałem własny pakiet aar ActionBarSherlock, który nazwałem „actionbarsherlock.aar”. To, co próbuję zrobić, to użyć tego aar do zbudowania mojego końcowego pakietu APK. Jeśli dołączę całą bibliotekę ActionBarSherlock jako moduł biblioteki Androida do mojego głównego projektu za pomocą projektu kompilacji („: actionbarsherlock”), będę mógł bez problemu zbudować pomyślnie.
Ale moim problemem jest to, że chcę zapewnić tę zależność jako pakiet plików AAR RĘCZNIE, tylko gdybym zrobił JAR, to nie wydaje mi się, aby wymyślić, jak poprawnie włączyć go do mojego projektu. Próbowałem użyć konfiguracji kompilacji, ale wydaje się, że to nie działa. Ciągle nie mogę znaleźć symbolu podczas kompilacji, co mówi mi, że plik klas.jar z pakietu aar nie jest uwzględniany w ścieżce klasy.
Czy ktoś wie o składni, aby ręcznie dołączyć pakiet aar jako plik?
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile files('libs/actionbarsherlock.aar')
}
android {
compileSdkVersion 15
buildToolsVersion "17.0"
}
EDYCJA: Więc odpowiedź jest taka, że obecnie nie jest obsługiwana, oto problem, jeśli chcesz go śledzić.
EDYCJA: Obecnie, ponieważ nie jest to bezpośrednio obsługiwane, najlepszą alternatywą wydaje się proponowane rozwiązanie z @RanWakshlak
EDYCJA: Również prostsza przy użyciu składni zaproponowanej przez @VipulShah
źródło
Odpowiedzi:
Wykonaj poniższe kroki, aby go uruchomić (przetestowałem go do wersji Android Studio 2.2)
Powiedzmy, że trzymałeś plik AAR w folderze libs. (załóż, że nazwa pliku to
cards.aar
)następnie w aplikacji
build.gradle
określ następujące i kliknij zsynchronizuj projekt z plikami Gradle. Otwórz build.gradle na poziomie projektu i dodajflatDir{dirs 'libs'}
tak jak poniżeja teraz otwórz plik build.grdle na poziomie aplikacji i dodaj
.aar
plikJeśli wszystko pójdzie dobrze, zobaczysz, że wpis do biblioteki jest wykonywany w build -> exploded-aar
Pamiętaj również, że jeśli importujesz plik .aar z innego projektu, który ma zależności, musisz je również uwzględnić w pliku build.gradle.
źródło
compile
zależności dodaj dwie zależnościdebugCompile(name:'cards-debug', ext:'aar')
ireleaseCompile(name:'cards-release', ext:'aar')
allprojects {...}
przechodzi do pliku oceny poziomu „projektu”, a druga część zdependencies {...}
należy przejść do pliku oceny poziomu „aplikacji”.źródło
Alt+B
> zrób > wyczyść i przebuduj projekt. Android Studio, dlaczego jesteś bolesny! Chcę mieć NetBeans IDE jako platformę programistyczną dla Androidaaar
lib do swojego projektuMożesz odwołać się do pliku AAR z repozytorium. Maven jest opcją, ale istnieje prostsze rozwiązanie: umieść plik aar w katalogu libs i dodaj repozytorium katalogów.
Następnie odwołaj się do biblioteki w sekcji zależności:
Więcej informacji można znaleźć na blogu Min'an .
źródło
implementation
itp. Jest to rozwiązanie kopiuj-wklej. Nadchodzi mnóstwo nowych upvotes, ponieważ wtyczka Gradient Build 4.0.0 dla Androida generuje teraz błąd zamiast ignorować zepsute ścieżki .aarPoniższe podejście działa z najnowszym Android studio (> v0.8.x):
Zapisz
aar
plik wlibs
folderze modułu aplikacji (np .<project>/<app>/libs/myaar.aar
:)Dodaj poniżej plik build.gradle do folderu modułu „app” (nie do katalogu głównego build.gradle projektu). Zanotuj nazwę w wierszu kompilacji, myaar @ aar nie myaar.aar.
Kliknij
Tools -> Android -> Sync Project with Gradle Files
źródło
przed (domyślnie)
wystarczy dodać
'*.aar'
winclude
tablicy.działa dobrze na Android Studio 3.x.
jeśli chcesz zignorować bibliotekę? rób jak to.
źródło
implementation fileTree(include: ['*.?ar'], dir: 'libs')
Właśnie mi się udało!
Skopiuj plik mylib-0.1.aar do folderu libs /
Dodaj te wiersze na dole build.gradle (powinna to być aplikacja, a nie projekt):
Na razie w porządku. Oto najważniejszy punkt:
Gradle musi uzyskać dostęp do sieci w celu uzyskania zależności, chyba że tryb offline jest włączony.
Upewnij się, że masz włączoną pracę offline za pomocą pola wyboru w Strukturach projektu / Gradade
- LUB -
Skonfiguruj ustawienia proxy , aby uzyskać dostęp do sieci.
Aby skonfigurować ustawienia proxy, musisz zmodyfikować plik gradle.properties projektu , konfigurując HTTP i https osobno, jak poniżej:
Mam nadzieję, że to zadziała.
źródło
Obecnie odwołanie do lokalnego pliku .aar nie jest obsługiwane (co potwierdził Xavier Ducrochet)
Zamiast tego możesz skonfigurować lokalne repozytorium Maven (o wiele prostsze niż się wydaje) i stamtąd odwołać się do pliku .aar.
Napisałem post na blogu, w którym szczegółowo opisuję, jak to działa:
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
źródło
Możesz dodać wiele
aar
zależności za pomocą zaledwie kilku wierszy kodu.Dodaj lokalne
flatDir
repozytorium:Dodaj każdy
aar
wlibs
katalogu docompile
konfiguracji zależności:źródło
libs
folderze.Niestety żadne z rozwiązań tutaj nie zadziałało (dostaję nierozwiązane zależności). To, co w końcu działało i jest najłatwiejszym sposobem IMHO: Podświetl nazwę projektu z Android Studio, a następnie Plik -> Nowy moduł -> Importuj pakiet JAR lub AAR. Kredyt trafia do rozwiązania w tym poście
źródło
Istnieją 2 sposoby:
Pierwszy sposób
Create New Module
okna przezFile -> New -> New Module
Wybierz
Import .JAR/.AAR Package
element i kliknijNext
przyciskDodaj zależność w
build.gradle
pliku należącym doapp
modułu.To wszystko.
Drugi sposób
Utwórz folder w
libs
katalogu, npaars
.Umieść swoją bibliotekę aar lib w folderze aars.
Dodaj fragment kodu
do
build.gradle
pliku należy do modułu aplikacji.build.gradle
pliku należącym doapp
modułu.To wszystko.
Jeśli umiesz czytać po chińsku, możesz sprawdzić blog 在 是 AAR 文件 以及 如何 在 Android 开发 中 使用
źródło
W Android Studio 3.4 i Gradle 5 możesz to po prostu zrobić w ten sposób
źródło
AKTUALIZACJA STUDIO ANDROIDA 3.4
źródło
Też miałem ten problem. Ten raport o problemie: https://code.google.com/p/android/issues/detail?id=55863 wydaje się sugerować, że bezpośrednie odwoływanie się do pliku .AAR nie jest obsługiwane.
Być może alternatywą jest na razie zdefiniowanie biblioteki actionbarsherlock jako biblioteki Gradle w katalogu nadrzędnym projektu i odpowiednie odniesienie.
Składnia jest zdefiniowana tutaj http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library
źródło
Znalazłem to obejście w narzędziu do śledzenia problemów Androida: https://code.google.com/p/android/issues/detail?id=55863#c21
Sztuką (a nie poprawką) jest izolowanie plików .aar w podprojekt i dodawanie bibliotek lib jako artefaktów:
Więcej informacji: Obsługa-przechodnie-zależności-dla-lokalnych-artefaktów-słoików-i-aar
źródło
compile project(':mobile')
w android / app / build.gradle,configurations.maybeCreate("default")
w android / mobile / build.gradle,include ':mobile'
w android / settings.gradleW moim przypadku mam pewne depresje w swojej bibliotece, a kiedy utworzyłem
aar
z niego, nie udało mi się, z powodu pominiętych depresji, więc moim rozwiązaniem jest dodanie wszystkich depencji z mojej bibliotekiarr
pliku.Mój poziom projektu
build.gradle
wygląda więc tak:build.gradle(modile app)
więc:i biblioteka
build.gradle
:źródło
Wypróbowałem tutaj wszystkie rozwiązania, ale żadne nie działa, ale zdaję sobie sprawę, że popełniłem błąd, umieściłem
.aar
niewłaściwy folder, jak widać poniżej, pomyślałem, że powinienem umieścić w folderze głównym, więc utworzyłem tamlibs
folder (1 na zdjęciu ), ale w folderze aplikacji jest jużlibs
, powinieneś umieścić na drugim miejsculibs
, mam nadzieję, że pomoże to tym, którzy mają ten sam problem co mój:źródło
Standardowy sposób importowania pliku AAR w aplikacji podano w https://developer.android.com/studio/projects/android-library.html#AddDependency
Kliknij opcję Plik> Nowy> Nowy moduł. Kliknij opcję Importuj pakiet .JAR / .AAR, a następnie kliknij przycisk Dalej. Wprowadź lokalizację skompilowanego pliku AAR lub JAR, a następnie kliknij przycisk Zakończ.
Dalsze kroki można znaleźć w powyższym linku.
źródło
Aby uprościć odpowiedź
Jeśli plik .aar jest lokalnie obecny, uwzględnij go
compile project(':project_directory')
w zależnościach build.gradle twojego projektu.Jeśli plik .aar jest obecny na zdalnym poziomie, uwzględnij
compile 'com.*********.sdk:project_directory:0.0.1@aar'
w zależności build.gradle twojego projektu.źródło
W moim przypadku po prostu działaj, gdy dodam „projekt” do kompilacji:
źródło
możesz zrobić coś takiego:
Umieść swoje biblioteki lokalne (z rozszerzeniem: .jar, .aar, ...) w folderze „libs” (lub innym, jeśli chcesz).
W build.gradle (poziom aplikacji) dodaj tę linię do zależności
plik implementacyjny Drzewo (obejmują: ['* .jar', '* .aar'], reż: 'libs')
źródło