Jak ręcznie dołączyć zewnętrzny pakiet aar za pomocą nowego systemu Gradle Android Build
Eksperymentowałem z nowym systemem Android 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 ostatecznego pliku APK. Jeśli dołączę całą bibliotekę ActionBarSherlock jako moduł biblioteki Androida do mojego głównego projektu za pomocą kompilacji projektu ( ': actionbarsherlock'), jestem w stanie zbudować z powodzeniem bez żadnych problemów.
Ale mój problem polega na tym, że Chcę dostarczyć tę zależność jako pakiet plików aar ręcznie, tylko jeśli chciałbym JAR to nie mogę się domyślić, jak poprawnie włączyć go do mojego projektu. Próbowałem użyć konfiguracji kompilacji, ale to chyba nie działa. Ciągle się nie mogę znaleźć symbolu podczas kompilacji, co mówi mi, że klasy.jar z pakietu aar nie jest dołączany do ścieżki klasowej.Czy ktoś zna składnię ręcznego dołączania pakietu aar jako akta?
Zbuduj.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"
}
EDIT: więc odpowiedź jest taka, że nie jest obecnie obsługiwany, oto problem jeśli chcesz go śledzić.
EDIT: obecnie, ponieważ nadal nie jest to bezpośrednio obsługiwane, najlepszą alternatywą wydaje się być proponowane rozwiązanie z @RanWakshlak
EDIT: także prostsze dzięki składni zaproponowanej przez @VipulShah
17 answers
Wykonaj poniższe kroki, aby go uruchomić ( Przetestowałem go w Android Studio 2.2)
Powiedzmy, że przechowałeś plik AAR w folderze libs. (Załóżmy, że nazwa pliku to cards.aar
)
Następnie w aplikacji build.gradle
Określ następujące i kliknij Synchronizuj projekt z plikami Gradle.
Open project level build.gradle i dodaj flatDir{dirs 'libs'}
Jak poniżej
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
I teraz otwórz build poziomu aplikacji.plik grdle i dodaj .aar
plik
dependencies {
compile(name:'cards', ext:'aar')
}
Jeśli wszystko pójdzie dobrze, zobaczysz, że wpis do biblioteki jest made in build- > exploded-AAR
Należy również pamiętać, że jeśli importujesz a .plik aar z innego projektu, który ma zależności, musisz uwzględnić je w swojej kompilacji.gradle też.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-07 11:25:57
- Kliknij prawym przyciskiem myszy projekt i wybierz "Otwórz Ustawienia modułu" .
- Kliknij "+" Przycisk w lewym górnym rogu okna, aby dodać nowy moduł.
- Select " Import .Słoik lub .Pakiet AAR" i kliknij przycisk "Dalej".
- Znajdź plik AAR za pomocą przycisku elipsa "..." obok " nazwa pliku" pole.
- pozostaw wybrany moduł aplikacji i kliknij na panelu zależności , aby dodać nowy moduł jako zależność.
- Użyj "+" Przycisk na ekranie zależności i wybierz "zależność modułu" .
- Wybierz moduł i kliknij " OK " .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 09:39:41
Możesz odwołać się do pliku aar z repozytorium. Maven jest opcją, ale jest prostsze rozwiązanie: umieść plik aar w katalogu libs i dodaj repozytorium katalogów.
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
Następnie odwołaj się do biblioteki w sekcji zależności:
dependencies {
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}
Możesz sprawdzić Min ' an blog post aby uzyskać więcej informacji.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-23 04:11:45
Poniższe podejście działa z najnowszym Android studio (>v0. 8.x):
Zapisz plik
aar
w folderzelibs
modułu aplikacji (np.:<project>/<app>/libs/myaar.aar
)-
Dodaj poniżej, aby zbudować.gradle z folderu modułu " app " (nie twój projekt root build.gradle). Zwróć uwagę na nazwę w linii kompilacji, to myaar@AAR nie myaar.aar.
dependencies { compile 'package.name.of.your.aar:myaar@aar' } repositories{ flatDir{ dirs 'libs' } }
Klik
Tools -> Android -> Sync Project with Gradle Files
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-09 19:58:11
Obecnie odwołuje się do lokalnego .plik aar nie jest obsługiwany (co potwierdził Xavier Ducrochet)
Zamiast tego możesz skonfigurować lokalne repozytorium Mavena (znacznie prostsze niż się wydaje) i odwołać się do .aar stamtąd.
Napisałem blogpost szczegółowo opisujący jak to działa tutaj:
Http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-27 12:34:08
Możesz dodać wiele zależności aar
za pomocą kilku linijek kodu.
Dodaj lokalne flatDir
repozytorium:
repositories {
flatDir {
dirs 'libs'
}
}
Dodaj każde aar
w katalogu libs
do compile
Konfiguracja zależności:
fileTree(dir: 'libs', include: '**/*.aar')
.each { File file ->
dependencies.add("compile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar'])
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-27 19:52:38
Udało mi się!
-
Skopiuj mylib-0.1.aar plik do folderulibs/
-
Dodaj te linie na dole budowania.gradle (powinna być aplikacja, nie projekt):
repositories { flatDir { dirs 'libs' } } dependencies { compile 'com.example.lib:mylib:0.1@aar' }
-
Jak na razie dobrze. Oto najważniejszy punkt:
Gradle musi uzyskać dostęp do sieci Dla zależności, chyba że włączony jest tryb offline.
Upewnij się, że włączyłeś pracę Offline poprzez checkbox in Project Structures / Gradle
-- lub --
Skonfiguruj ustawienia serwera proxy w celu uzyskania dostępu do sieci.
Aby skonfigurować ustawienia proxy musisz zmodyfikować gradle projektu.właściwości pliku , konfigurowanie http i https oddzielnie, jak poniżej:
systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=user
systemProp.http.proxyPassword=pass
systemProp.http.nonProxyHosts=localhost
systemProp.http.auth.ntlm.domain=example <for NT auth>
systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=user
systemProp.https.proxyPassword=pass
systemProp.https.nonProxyHosts=localhost
systemProp.https.auth.ntlm.domain=example <for NT auth>
Mam nadzieję, że to zadziała.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-22 22:40:44
Niestety żadne z rozwiązań tutaj nie zadziałało dla mnie (dostaję nierozwiązane zależności). Co w końcu zadziałało i jest najprostszym sposobem IMHO jest: Podświetl nazwę projektu z Android Studio, a następnie Plik - > Nowy Moduł - > Importuj pakiet JAR lub Aar. Kredyt idzie na rozwiązanie w Ten post
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-08 15:44:57
Before (default)
implementation fileTree(include: ['*.jar'], dir: 'libs')
Wystarczy dodać '*.aar'
w include
tablicy.
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
To działa dobrze na Android Studio 3.x.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-05 09:00:33
Ja też miałem ten problem. Ten raport: https://code.google.com/p/android/issues/detail?id=55863 wydaje się sugerować, że bezpośrednio odwołując się do .Plik AAR nie jest obsługiwany.
Być może alternatywą na razie jest zdefiniowanie biblioteki actionbarsherlock jako biblioteki Gradle w katalogu nadrzędnym twojego projektu i odpowiednie odniesienie.
Składnia jest zdefiniowana tutaj http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 23:07:34
W moim przypadku mam kilka depenencji w mojej bibliotece i kiedy tworzę aar
z niej nie udało mi się, z powodu brakujących depenencji, więc moim rozwiązaniem jest dodanie wszystkich depenencji z mojej biblioteki za pomocą pliku arr
.
Więc mój poziom projektu build.gradle
wygląda tak:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
}
}
allprojects {
repositories {
mavenCentral()
//add it to be able to add depency to aar-files from libs folder in build.gradle(yoursAppModule)
flatDir {
dirs 'libs'
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(modile app)
więc:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.sampleapp"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
//your project depencies
...
//add lib via aar-depency
compile(name: 'aarLibFileNameHere', ext: 'aar')
//add all its internal depencies, as arr don't have it
...
}
I biblioteka build.gradle
:
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
//here goes library projects dependencies, which you must include
//in yours build.gradle(modile app) too
...
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-26 18:12:10
Próbowałem wszystkie rozwiązania tutaj, ale żaden nie działa, a następnie zdaję sobie sprawę, że popełniłem błąd, i umieścić .aar
w niewłaściwym folderze, jak widać poniżej, pomyślałem, że należy umieścić w folderze głównym, więc utworzyłem libs
folder tam (1 Na zdjęciu), ale wewnątrz folderu aplikacji, jest już libs
, należy umieścić w drugim libs
, nadzieję, że to pomoże tym, którzy mają ten sam problem jak mój:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-01 02:59:49
Standardowy sposób importowania pliku AAR w aplikacji jest podany w https://developer.android.com/studio/projects/android-library.html#AddDependency
Kliknij Plik > Nowy > Nowy Moduł. Kliknij Importuj .JAR/Pakiet AAR, a następnie kliknij Dalej. Wprowadź lokalizację skompilowanego pliku AAR lub jar, a następnie kliknij przycisk Zakończ.
Prosimy o zapoznanie się z powyższym linkiem, aby zapoznać się z kolejnymi krokami.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-29 14:49:10
Istnieją 2 sposoby:
- pierwsza droga
1: Otwórz Android Studio i przejdź do okna "Utwórz nowy moduł" przez Plik->Nowy->Nowy Moduł ...
2: wybierz " Import .JAR/Pakiet AAR " i kliknij przycisk Dalej
3: Dodaj zależność w build.gradle
pliku, który należy do Twojego app
Modlue.
dependencies {
...
implementation project(path: ':your aar lib name')
}
To wszystko.
- druga droga
1 Utwórz folder w katalogu libs
, takim jak aars
.
2 Umieść aar lib w folderze aars.
3 Dodaj fragment kodu
repositories {
flatDir {
dirs 'libs/aars'
}
}
Do pliku build.gradle
należy app module.
4 Dodaj zależność w build.gradle
pliku, który należy do Twojego app
Modlue.
dependencies {
...
compile(name:'your aar lib name', ext:'aar')
}
To wszystko
Jeśli umiesz czytać po chińsku, możesz sprawdzić blog 什么是aar文and在在android中中使用
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-27 01:50:54
Znalazłem to obejście w śledzeniu problemów z Androidem: https://code.google.com/p/android/issues/detail?id=55863#c21
[[1]}sztuczka (nie fix) polega na izolowaniu swojego .pliki aar do podprojektu i dodawanie bibliotek jako artefaktów:configurations.create("default")
artifacts.add("default", file('somelib.jar'))
artifacts.add("default", file('someaar.aar'))
Więcej informacji: Handling-transitive-dependencies-for-local-artefacts-jars-and-aar
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-14 15:26:02
Just to simplify the answer
Jeśli .plik aar jest lokalnie obecny, a następnie dołączcompile project(':project_directory')
w zależności od budowy.gradle twojego projektu.
Jeśli .plik AAR obecny w zdalnym następnie zawierać
compile 'com.*********.sdk:project_directory:0.0.1@aar'
in dependencies of build.gradle twojego projektu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-09 08:53:29
W moim przypadku po prostu działa, gdy dodam "projekt" do kompilacji:
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
compile project('com.x.x:x:1.0.0')
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-20 20:21:19