una - Cómo incluir manualmente el paquete aar externo usando el nuevo sistema de desarrollo de Android Gradle
eliminar libreria android studio (17)
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 usar esta aar para construir mi APK final. Si incluyo toda la biblioteca ActionBarSherlock como un módulo de la biblioteca de Android en mi proyecto principal utilizando el proyecto de compilación ('': actionbarsherlock''), puedo construir con éxito sin problemas.
Pero mi problema es que quiero proporcionar MANUALMENTE esa dependencia como un paquete de archivos simplemente si quisiera un JAR, entonces parece que no puedo encontrar la forma de incluirlo correctamente en mi proyecto. He intentado usar la configuración de compilación, pero esto no parece funcionar. Sigo obteniendo el símbolo no puedo encontrar durante la compilación, lo que me dice que las classes.jar del paquete aar no se incluyen en el classpath.
¿Alguien sabe de 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"
}
EDIT: Entonces, la respuesta es que actualmente no es compatible, aquí está el issue si desea realizar un seguimiento.
EDITAR: Actualmente, como todavía no se admite directamente, la mejor alternativa parece ser la solución propuesta de @RanWakshlak
EDITAR: También es más simple usando la sintaxis propuesta por @VipulShah
- Haga clic derecho en su proyecto y seleccione "Abrir la configuración del módulo" .
- Haga clic en el botón "+" en la esquina superior izquierda de la ventana para agregar un nuevo módulo.
- Seleccione "Importar .JAR o .AAR Package" y haga clic en el botón "Siguiente" .
- Busque el archivo AAR utilizando el botón de puntos suspensivos "..." al lado del campo "Nombre de archivo".
- Mantenga el módulo de la aplicación seleccionado y haga clic en el panel Dependencias para agregar el nuevo módulo como una dependencia.
- Use el botón "+" de la pantalla de dependencias y seleccione "Dependencia de módulo" .
- Seleccione el módulo y haga clic en "Aceptar" .
¡Acabo de tener éxito!
Copie el archivo mylib-0.1.aar en la carpeta libs /
Agregue estas líneas al final de build.gradle (debe ser una aplicación, no un proyecto):
repositories { flatDir { dirs ''libs'' } } dependencies { compile ''com.example.lib:mylib:0.1@aar'' }
Hasta ahora tan bueno. Aquí viene el punto más importante:
Gradle necesita acceder a la red para dependencias a menos que el modo fuera de línea esté habilitado.
Asegúrese de que ha habilitado el trabajo fuera de línea a través de la casilla de verificación en Estructuras del proyecto / Gradle
- O -
Configure los ajustes del proxy para acceder a la red.
Para configurar los ajustes del proxy, debe modificar el archivo gradle.properties del proyecto, 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.
Actualmente, la referencia a un archivo .aar local no es compatible (según lo confirmó Xavier Ducrochet)
Lo que puede hacer en su lugar es configurar un repositorio local de Maven (mucho más simple de lo que parece) y hacer referencia al .aar desde allí.
He escrito un blogpost que detalla cómo hacer que funcione aquí:
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
Desafortunadamente, ninguna de las soluciones aquí funcionó para mí (tengo dependencias sin resolver). Lo que finalmente funcionó y es la forma más sencilla de IMHO es: resaltar el nombre del proyecto en Android Studio, luego Archivo -> Nuevo módulo -> Importar paquete JAR o AAR. El crédito va a la solución en este post.
El siguiente enfoque funciona con el último estudio de Android (> v0.8.x):
Guarde el archivo
aar
en la carpetalibs
del módulo de la aplicación (por ejemplo:<project>/<app>/libs/myaar.aar
)Agregue lo siguiente a build.gradle de su carpeta del módulo de "aplicación" (no a la raíz de su proyecto build.gradle). Anote 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 en
Tools -> Android -> Sync Project with Gradle Files
En mi caso, solo funciona cuando agrego "proyecto" para compilar:
repositories {
mavenCentral()
flatDir {
dirs ''libs''
}
}
dependencies {
compile project(''com.x.x:x:1.0.0'')
}
En mi caso, tengo algunas dependencias en mi biblioteca y cuando aar
un aar
partir de ella aar
, debido a las dependencias perdidas, por lo que mi solución es agregar todas las dependencias de mi biblioteca con un archivo arr
.
Así que mi nivel de proyecto build.gradle
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)
para:
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 la 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
...
}
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 sus 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
Intenté todas las soluciones aquí, pero ninguna está funcionando, luego me di 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 libs
, deberías poner segundas libs
, espero que esto ayude a aquellos que tienen el mismo problema que el mío:
La forma estándar de importar un archivo AAR en una aplicación se encuentra en https://developer.android.com/studio/projects/android-library.html#AddDependency
Haga clic en Archivo> Nuevo> Nuevo módulo. Haga clic en Importar .JAR / .AAR Package luego haga clic en Siguiente. Ingrese la ubicación del archivo AAR o JAR compilado y luego haga clic en Finalizar.
Por favor, consulte el enlace de arriba para los próximos pasos.
Puede agregar múltiples dependencias aar
con solo unas pocas líneas de código.
Añadir repositorio de flatDir
local:
repositories {
flatDir {
dirs ''libs''
}
}
Agregue cada aar
en el directorio libs
para compile
la configuración de dependencia:
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''])
}
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 directorios.
repositories {
mavenCentral()
flatDir {
dirs ''libs''
}
}
Luego haga referencia a la biblioteca en la sección de dependencia:
dependencies {
compile ''com.actionbarsherlock:actionbarsherlock:4.4.0@aar''
}
Puedes consultar la publicación del blog de Min''an para obtener más información.
Solo para simplificar la respuesta.
Si el archivo .aar está presente localmente, entonces incluya
compile project('':project_directory'')
en dependencias de build.gradle de su proyecto.
Si el archivo .aar está presente en el control remoto, incluya compile ''com.*********.sdk:project_directory:0.0.1@aar''
en las dependencias de build.gradle de su proyecto.
También he tenido este problema. Este informe de problemas: issue parece sugerir que no se admite la referencia directa al archivo .AAR.
Quizás la alternativa por ahora es definir la biblioteca de Actionbarsherlock como una biblioteca de Gradle en el directorio principal de su proyecto y consultar en consecuencia.
La sintaxis se define aquí http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library
Tiene 2 formas:
- Primera forma
1: Abra su Android Studio y navegue a la ventana "Crear nuevo módulo" por Archivo-> Nuevo-> Nuevo módulo ...
2: Seleccione el elemento "Importar .JAR / .AAR Package" y haga clic en el botón siguiente
3: Agregue la dependencia en el archivo build.gradle
que pertenece a su app
Modlue.
dependencies {
...
implementation project(path: '':your aar lib name'')
}
que todos.
- segunda vía
1 Cree una carpeta en el directorio libs
, como aars
.
2 Coloque su biblioteca de aar en la carpeta aars.
3 Agrega el fragmento de código
repositories { flatDir { dirs ''libs/aars'' } }
en su archivo build.gradle
pertenece al módulo de la aplicación.
4 Agregue dependencia en el archivo build.gradle
que pertenezca a su app
Modlue.
dependencies { ... compile(name:''your aar lib name'', ext:''aar'') }
que todos
Si puedes leer chino, puedes consultar el blog 什么是AAR文件以及如何在Android开发中使用
antes (por defecto)
implementation fileTree(include: [''*.jar''], dir: ''libs'')
solo agrega ''*.aar''
en la matriz de include
.
implementation fileTree(include: [''*.jar'', ''*.aar''], dir: ''libs'')
Funciona bien en Android Studio 3.x.
Siga los pasos a continuación para que funcione (lo he probado en Android Studio 2.2)
Digamos que has guardado un archivo en la carpeta libs. ( cards.aar
nombre del archivo es cards.aar
)
luego, en la aplicación build.gradle
especifique lo siguiente y haga clic en sincronizar proyecto con archivos Gradle. Abra el nivel de proyecto build.gradle y agregue flatDir{dirs ''libs''}
como lo hizo abajo
allprojects {
repositories {
jcenter()
flatDir {
dirs ''libs''
}
}
}
y ahora abra el archivo build.grdle de nivel de aplicación y agregue el archivo .aar
dependencies {
compile(name:''cards'', ext:''aar'')
}
Si todo va bien, verá que la entrada de la biblioteca está hecha en compilación -> exploded-aar
También tenga en cuenta que si está importando un archivo .aar de otro proyecto que tiene dependencias, también deberá incluirlos en su build.gradle.