Cómo incluir manualmente un paquete aar externo usando el nuevo sistema de compilación de Gradle Android
He estado experimentando con el nuevo sistema de compilación de Android y me he encontrado con un pequeño problema. He compilado mi propio paquete aar de ActionBarSherlock que he llamado ' actionbarsherlock.aar'. Lo que estoy tratando de hacer es utilizar este aar para construir mi APK final. Si incluyo toda la biblioteca ActionBarSherlock como un módulo android-library a mi proyecto principal usando compile project ( ': actionbarsherlock') soy capaz de construir con éxito sin ningún problema.
Pero mi problema es que Quiero proporcionar esa dependencia como un paquete de archivos aar MANUALMENTE solo si quisiera un JAR, entonces parece que no puedo averiguar cómo incluirlo correctamente en mi proyecto. He intentado usar la configuración de compilación, pero esto no parece funcionar. Sigo consiguiendo no puede encontrar el símbolo durante compilar que me dice que las clases.jar del paquete aar no se incluye en el classpath.
¿Alguien conoce la sintaxis para incluir manualmente un paquete aar como un archivo?
Construir.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"
}
EDITAR: Así que la respuesta es que actualmente no está soportado, aquí está el problema si quieres rastrearlo.
EDITAR: Actualmente, como esto todavía no está soportado directamente, la mejor alternativa parece ser la solución propuesta de @RanWakshlak
EDITAR: También más simple usando la sintaxis propuesta por @VipulShah
17 answers
Siga los pasos a continuación para que funcione ( lo he probado hasta Android Studio 2.2)
Digamos que ha mantenido el archivo aar en la carpeta libs. (supongamos que el nombre del archivo es cards.aar
)
Luego, en app build.gradle
especifique lo siguiente y haga clic en sincronizar proyecto con archivos de Gradle.
Construir a nivel de proyecto abierto.gradle y agregue flatDir{dirs 'libs'}
como lo hizo a continuación
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
Y ahora abre app level build.grdle file and add .aar
file
dependencies {
compile(name:'cards', ext:'aar')
}
Si todo va bien, verá que la entrada de la biblioteca es hecho en build- > exploded-aar
También tenga en cuenta que si está importando un.archivo aar de otro proyecto que tenga dependencias que necesitarás incluir en tu compilación.gradle, también.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-07 11:25:57
- Haga clic derecho en su proyecto y seleccione "Abrir configuración del módulo".
- Haga clic en "+" botón en la esquina superior izquierda de la ventana para agregar un nuevo módulo.
- Seleccione " Importar.JAR or .Paquete AAR " y haga clic en el botón "Next".
- Encuentre el archivo AAR usando el botón de puntos suspensivos "..." junto al " Nombre del archivo" campo.
- Mantenga seleccionado el módulo de la aplicación y haga clic en el panel Dependencias para agregar el nuevo módulo como dependencia.
- Utilice el "+" botón de la pantalla dependencias y seleccione "Module dependency".
- Seleccione el módulo y haga clic en "OK".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-15 09:39:41
Puede hacer referencia a un archivo aar desde un repositorio. Maven es una opción, pero hay una solución más simple: coloque el archivo aar en su directorio libs y agregue un repositorio de directorio.
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
Luego haga referencia a la biblioteca en la sección de dependencias:
dependencies {
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}
Usted puede comprobar hacia fuera Min'an blog post para más información.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-23 04:11:45
El siguiente enfoque funciona con la última versión de Android Studio (> v0.8.x):
Guarde el archivo
aar
en la carpetalibs
del módulo de aplicación (por ejemplo:<project>/<app>/libs/myaar.aar
)-
Agregue lo siguiente para construir.gradle de la carpeta del módulo " app " (no de la compilación raíz de tu proyecto.gradle). Tenga en cuenta el nombre en la línea de compilación, es myaar@aar no myaar.aar.
dependencies { compile 'package.name.of.your.aar:myaar@aar' } repositories{ flatDir{ dirs 'libs' } }
Haga clic
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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-09 19:58:11
Actualmente haciendo referencia a un local .el archivo aar no es compatible (según lo confirmado por Xavier Ducrochet)
Lo que puede hacer en su lugar es configurar un repositorio Maven local (mucho más simple de lo que parece) y hacer referencia al .aar desde allí.
He escrito un blogpost detallando cómo hacerlo funcionar aquí:
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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-27 12:34:08
Puede agregar varias dependencias aar
con solo unas pocas líneas de código.
Añadir local flatDir
repositorio:
repositories {
flatDir {
dirs 'libs'
}
}
Agregue cada aar
en el directorio libs
a compile
configuración de dependencias:
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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-27 19:52:38
¡Acabo de tener éxito!
-
Copie el mylib-0.1.aar archivo en la carpeta libs/
-
Agregue estas líneas al final de build.gradle (debe ser app, no project):
repositories { flatDir { dirs 'libs' } } dependencies { compile 'com.example.lib:mylib:0.1@aar' }
Hasta ahora todo bien. Aquí viene el punto más importante:
Gradle necesita acceder a la red para las dependencias a menos que el modo sin conexión esté habilitado.
Asegúrese de que ha habilitado El trabajo sin conexión a través del Casilla de verificación en Estructuras de proyecto / Gradle
OR O {
Configure la configuración del proxy para acceder a la red.
Para configurar la configuración del proxy tienes que modificar el gradle del proyecto.properties archivo, configurando http y https por separado como se muestra a continuación:
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>
Espero que esto funcione.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-22 22:40:44
Desafortunadamente ninguna de las soluciones aquí funcionó para mí (tengo dependencias sin resolver). Lo que finalmente funcionó y es la forma más fácil en Mi humilde opinión es: Resaltar el nombre del proyecto desde Android Studio y luego Archivo - > Nuevo módulo - > Importar paquete JAR o AAR. El crédito va a la solución en este post
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-08 15:44:57
Antes(por defecto)
implementation fileTree(include: ['*.jar'], dir: 'libs')
Simplemente agregue '*.aar'
en include
array.
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
Funciona bien en 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-05 09:00:33
También he tenido este problema. This issue report: https://code.google.com/p/android/issues/detail?id=55863 parece sugerir que haciendo referencia directa a la .El archivo AAR no es compatible.
Quizás la alternativa por ahora es definir la biblioteca actionbarsherlock como una biblioteca de Gradle bajo el directorio padre de tu proyecto y referenciar en consecuencia.
La sintaxis se define aquí 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-29 23:07:34
En mi caso tengo algunas dependencias en mi biblioteca y cuando creo un aar
a partir de ella fallé, debido a las dependencias perdidas, por lo que mi solución es agregar todas las dependencias de mi lib con un archivo arr
.
Así que mi nivel de proyecto build.gradle
se ve así:
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)
entonces:
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
...
}
Y biblioteca 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-26 18:12:10
Probé todas las soluciones aquí pero ninguna funciona, luego me doy cuenta de que cometí un error, puse el .aar
en la carpeta incorrecta, como se puede ver a continuación, pensé que debería poner en la carpeta raíz, así que creé una carpeta libs
allí (1 en la imagen), pero dentro de la carpeta de la aplicación, ya hay un libs
, debe poner en segundo libs
, espero que esto ayude a aquellos que tienen el mismo problema que el mío:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-01 02:59:49
La forma estándar de importar un archivo AAR en una aplicación se da en https://developer.android.com/studio/projects/android-library.html#AddDependency
Haga clic en Archivo > Nuevo > Nuevo Módulo. Haz clic en Importar .FRASCO/.AAR Paquete a continuación, haga clic en Siguiente. Introduzca la ubicación del archivo AAR o JAR compilado y haga clic en Finalizar.
Por favor, consulte el enlace anterior para los siguientes pasos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-29 14:49:10
Hay 2 maneras:
- Primera vía
1:Abre tu Android Studio y navega a la ventana "Crear Nuevo módulo"por Archivo->Nuevo->Nuevo módulo ...
2: Seleccione la opción " Importar.FRASCO/.AAR Paquete " elemento y haga clic en el botón siguiente
3:Agregue dependencia en el archivo build.gradle
que pertenece a su app
Modlue.
dependencies {
...
implementation project(path: ':your aar lib name')
}
Eso es todo.
- segunda vía
1 Crear una carpeta en el directorio libs
,como aars
.
2 Pon tu aar lib en la carpeta aars.
3 Añade el fragmento de código
repositories {
flatDir {
dirs 'libs/aars'
}
}
En su archivo build.gradle
pertenecen al módulo de aplicación.
4 Agregue dependencia en el archivo build.gradle
que pertenece a su app
Modlue.
dependencies {
...
compile(name:'your aar lib name', ext:'aar')
}
Que todos
Si usted puede leer Chino, usted puede verificar el blog 什么是AAR文件以及如何在Android开发中使用
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-27 01:50:54
Encontré esta solución en el rastreador de problemas de Android: https://code.google.com/p/android/issues/detail?id=55863#c21
El truco (no una solución) es aislar su .archivos aar en un subproyecto y agregar sus libs como artefactos:
configurations.create("default")
artifacts.add("default", file('somelib.jar'))
artifacts.add("default", file('someaar.aar'))
Más información: Handling-transitive-dependencies-for-local-artifacts-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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-14 15:26:02
Solo para simplificar la respuesta
Si .el archivo aar está presente localmente y luego incluyecompile project(':project_directory')
en dependencias de build.gradle de tu proyecto.
Si .aar archivo presente en el control remoto a continuación, incluir
compile 'com.*********.sdk:project_directory:0.0.1@aar'
en dependencias de compilación.gradle de tu proyecto.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-09 08:53:29
En mi caso solo trabajo cuando agrego "proyecto" a compilar:
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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-20 20:21:19