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 al que he llamado 'actionbarsherlock.aar'. Lo que intento hacer es usar este aar para construir mi APK final. Si incluyo toda la biblioteca ActionBarSherlock como un módulo de biblioteca de Android en mi proyecto principal usando el proyecto de compilación (': actionbarsherlock'), puedo 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 entender cómo incluirlo adecuadamente en mi proyecto. Intenté usar la configuración de compilación pero parece que esto no funciona. Sigo obteniendo símbolos que no pueden encontrar durante la compilación, lo que me dice que el class.jar del paquete aar no se incluye en el classpath.
¿Alguien sabe de la sintaxis para incluir manualmente un paquete aar como archivo?
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"
}
EDITAR: Entonces la respuesta es que actualmente no es compatible, aquí está el problema si desea rastrearlo.
EDITAR: actualmente ya que esto todavía no es compatible directamente, la mejor alternativa parece ser la solución propuesta de @RanWakshlak
EDITAR: también más simple mediante el uso de la sintaxis propuesta por @VipulShah
fuente
Respuestas:
Siga los pasos a continuación para que funcione (lo he probado hasta Android Studio 2.2)
Digamos que ha mantenido un archivo aar en la carpeta libs. (suponga que el 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 Project level build.gradle y agregueflatDir{dirs 'libs'}
como lo hizo a continuacióny ahora abra el archivo build.grdle de nivel de aplicación y agregue el
.aar
archivoSi todo va bien, verá que la entrada de la biblioteca se realiza en build -> 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.
fuente
compile
dependencia, agregue dos dependenciasdebugCompile(name:'cards-debug', ext:'aar')
yreleaseCompile(name:'cards-release', ext:'aar')
allprojects {...}
va al archivo gradle de nivel "proyecto", y la segunda parte condependencies {...}
debe ir al archivo gradle de nivel "aplicación".fuente
Alt+B
> limpiar y reconstruir el proyecto. Android Studio, ¿por qué eres doloroso? Deseo tener NetBeans IDE como Android Developer Platformaar
lib a su proyectoPuede hacer referencia a un archivo aar desde un repositorio. Un 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.
Luego haga referencia a la biblioteca en la sección de dependencia:
Puede consultar la publicación del blog de Min'an para obtener más información.
fuente
implementation
etc. Esta es copiar y pegar la solución. Muchas nuevas votaciones entrantes porque Android Build Gradle Plugin 4.0.0 ahora arroja un error en lugar de ignorar las rutas rotas .aarEl siguiente enfoque funciona con el último estudio de Android (> v0.8.x):
Guarde el
aar
archivo con el módulo de aplicaciónlibs
de carpeta (por ejemplo:<project>/<app>/libs/myaar.aar
)Agregue lo siguiente a build.gradle de la carpeta del módulo "aplicación" (no la raíz del proyecto build.gradle). Tenga en cuenta el nombre en la línea de compilación, es myaar @ aar no myaar.aar.
Hacer clic
Tools -> Android -> Sync Project with Gradle Files
fuente
antes (predeterminado)
solo agregue
'*.aar'
en lainclude
matriz.funciona bien en Android Studio 3.x.
si quieres ignorar alguna biblioteca? hazlo así.
fuente
implementation fileTree(include: ['*.?ar'], dir: 'libs')
¡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):
Hasta aquí todo bien. Aquí viene el punto más importante:
Gradle necesita acceder a la red para las dependencias a menos que el modo fuera de línea esté habilitado.
Asegúrese de haber habilitado el trabajo sin conexión a través de la casilla de verificación en Project Structures / Gradle
- O -
Configure los ajustes del proxy para acceder a la red.
Para configurar los ajustes del proxy, debe modificar los valores del proyecto. archivo gradle.properties , configurando http y https por separado como se muestra a continuación:
Espero que esto funcione.
fuente
Actualmente no se admite la referencia a un archivo .aar local (como 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 una publicación de blog que detalla cómo hacer que funcione aquí:
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
fuente
Puede agregar múltiples
aar
dependencias con solo unas pocas líneas de código.Agregar
flatDir
repositorio local :Añadir todos
aar
en ellibs
directorio decompile
configuración de la dependencia:fuente
libs
carpeta.Desafortunadamente, ninguna de las soluciones aquí funcionó para mí (obtengo 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 esta publicación
fuente
Hay 2 formas:
La primera forma
Create New Module
ventanaFile -> New -> New Module
Seleccione el
Import .JAR/.AAR Package
elemento y haga clic en elNext
botónAgregue una dependencia en el
build.gradle
archivo que pertenece a suapp
módulo.Eso es todo.
La segunda forma
Cree una carpeta en el
libs
directorio, comoaars
.Pon tu lib aar en la carpeta aars.
Agregue el fragmento de código
en su
build.gradle
archivo pertenece al módulo de la aplicación.build.gradle
archivo que pertenece a suapp
módulo.Eso es todo.
Si puede leer chino, puede consultar el blog 什么 是 AAR 文件 以及 如何 在 Android 开发 中 使用
fuente
Con Android Studio 3.4 y Gradle 5 simplemente puedes hacerlo así
fuente
ACTUALIZAR EL ESTUDIO DE ANDROID 3.4
fuente
También he tenido este problema. Este informe de problema: https://code.google.com/p/android/issues/detail?id=55863 parece sugerir que no se admite la referencia directa al archivo .AAR.
Quizás la alternativa por ahora es definir la biblioteca actionbarsherlock como una biblioteca Gradle en el directorio principal de su proyecto y hacer referencia en consecuencia.
La sintaxis se define aquí http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library
fuente
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 bibliotecas como artefactos:
Más información: Handling-transitive-dependencies-for-local-artifacts-jars-and-aar
fuente
compile project(':mobile')
en android / app / build.gradle,configurations.maybeCreate("default")
en android / mobile / build.gradle,include ':mobile'
en android / settings.gradleEn mi caso, tengo algunas dependencias en mi biblioteca y cuando creo una
aar
desde allí fallé, debido a las dependencias perdidas, por lo que mi solución es agregar todas las dependencias de mi biblioteca con unarr
archivo.Entonces mi nivel de proyecto se
build.gradle
ve así:build.gradle(modile app)
entonces:y biblioteca
build.gradle
:fuente
Intenté todas las soluciones aquí, pero ninguna funciona, luego me di cuenta de que cometí un error, puse la
.aar
carpeta incorrecta, como puede ver a continuación, pensé que debería ponerla en la carpeta raíz, así que creé unalibs
carpeta allí (1 en la imagen ), pero dentro de la carpeta de la aplicación, ya hay unlibs
, debe poner en segundo lugarlibs
, espero que esto ayude a aquellos que tienen el mismo problema que el mío:fuente
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 paquete .JAR / .AAR y luego haga clic en Siguiente. Ingrese la ubicación del archivo AAR o JAR compilado y luego haga clic en Finalizar.
Consulte el enlace de arriba para los próximos pasos.
fuente
Solo para simplificar la respuesta
Si el archivo .aar está presente localmente, inclúyalo
compile project(':project_directory')
en dependencias de build.gradle de su proyecto.Si el archivo .aar está presente en remoto,
compile 'com.*********.sdk:project_directory:0.0.1@aar'
inclúyalo en dependencias de build.gradle de su proyecto.fuente
En mi caso, solo trabajo cuando agrego "proyecto" para compilar:
fuente
puedes hacer algo como esto:
Coloque sus bibliotecas locales (con extensión: .jar, .aar, ...) en la carpeta 'libs' (u otra si lo desea).
En build.gradle (nivel de aplicación), agregue esta línea a las dependencias
implementación fileTree (incluye: ['* .jar', '* .aar'], dir: 'libs')
fuente