Comment inclure de l'aar fichiers utilisés dans un projet de bibliothèque dans le projet principal dans Android
Mon projet est, y compris certains de la bibliothèque de projet. La bibliothèque est l'utilisation de certaines aar fichiers et ses dependecny est déjà défini dans le module: gradle fichier. Je suis face à problème en incluant cette bibliothèque dans mon projet.
Si je continue à dupliquer l'aar fichiers dans app->lib et de définir leur dépendance dans l'app->gradle fichier alors il n'y a pas de problème. Mais il ne devrait pas être la bonne approche.
Veuillez trouver ci-dessous le message d'erreur:
Un problème est survenu de la configuration de projet": app'.
Could not resolve all dependencies for configuration ':app:_qaDebugCompile'. Could not find :api-release:. Searched in the following locations:
https://jcenter.bintray.com//api-release//api-release-.pom
https://jcenter.bintray.com//api-release//api-release-.aar
file:/D:/sample/sample-android-app/app/libs/api-release-.aar
file:/D:/sample/sample-android-app/app/libs/api-release.aar
Required by:
sample-android-app:app:unspecified > sample-android-app:misnapworkflow:unspecified
veuillez trouver ci-dessous la structure du projet:
sample
|-- app
|-- misnapworkflow
|
|-- lib
|-- api-release.aar
En application gradle fichier suivant a été mentionné pour inclure le projet
dépendances { compiler le projet(':misnapworkflow') }
Veuillez trouver ci-dessous les misnapworkflow gradle fichier:
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 23
consumerProguardFiles 'proguard-rules.pro'
}
lintOptions {
abortOnError false
}
//Publish both debug and release libraries
publishNonDefault true
buildTypes {
debug {
debuggable true
jniDebuggable true
minifyEnabled false
shrinkResources false
testCoverageEnabled true
}
release {
signingConfig signingConfigs.debug
debuggable false
jniDebuggable false
minifyEnabled true
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
task grantPermissions(type: Exec, dependsOn: 'installDebugTest') {
logger.warn('Granting permissions...')
commandLine "adb shell pm grant com.miteksystems.misnap.misnapworkflow.test android.permission.WRITE_EXTERNAL_STORAGE".split(' ')
commandLine "adb shell pm grant com.miteksystems.misnap.misnapworkflow.test android.permission.CAMERA".split(' ')
logger.warn('Permissions granted.')
}
tasks.whenTaskAdded { task ->
if (task.name.startsWith('connected')
|| task.name.startsWith('create')) {
task.dependsOn grantPermissions
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
//Add dependency for MiSnap external API
compile(name: 'api-release', ext: 'aar')
//Add dependency for MiSnap
compile(name: 'misnap-release', ext: 'aar') {
exclude module: 'appcompat-v7'
}
//Eventbus dependency
compile 'de.greenrobot:eventbus:2.4.0'
//Add OPTIONAL dependency for Manatee
compile(name: 'manatee-release', ext: 'aar')
compile(name: 'cardio-release', ext: 'aar')
}
repositories {
flatDir {
dirs 'libs'
}
}
J'ai résolu ce problème dans mon projet, veuillez consulter la réponse ci-dessous
merci!!!!!! Il a été un moment donc pas vraiment besoin de plus. Merci quand même 🙂
OriginalL'auteur Manish | 2016-06-21
Vous devez vous connecter pour publier un commentaire.
La aar fichier ne contient pas de transitif dépendances et n'a pas une pom fichier qui décrit les dépendances utilisées par la bibliothèque.
Cela signifie que, si vous importez un aar de fichier à l'aide d'un
flatDir
repo vous devez spécifier les dépendances également dans votre projet.Vous devez utiliser un repository maven (vous devez publier la bibliothèque dans un lieu public ou privé repo maven), vous n'aurez pas le même problème.
Dans ce cas, gradle télécharge les dépendances à l'aide du pom de fichier qui contient la liste de dépendances.
Peut-il atteindre à l'aide fournie tag
Vous pouvez utiliser le même aar fichier sans le copier. En tout cas, vous n'avez pas à modifier l'gradle fichier de la bibliothèque, mais vous devez avoir les dépendances de votre application à construire.gradle fichier.
J'ai fait de même, mais à avoir d'erreur. Tous les aar fichiers sont copiés dans le module du dossier lib et également mentionné dans le répertoire lib de gradle fichier. Maintenant, dans mon application module, dans gradle fichier que j'ai écrit inclus lib projet dans la dépendance et aussi tous les aar fichiers. Gradle est à la recherche dans l'application:dossier libs
Vous devez spécifier le dossier de l'aar dans votre flatDir, et aussi, vous devez ajouter le jcenter repo dans votre construction.gradle fichier.
OriginalL'auteur
À suivre cette procédure:
Étape 1:
Importation
.aar
Fichier ---> Nouveau ---> Nouveau Module ---> (sélectionner) à l'importation .JAR/.AAR package ---> Suivant --->(sélectionnez
.aar
fichier)FinitionMaintenant votre projet est importé.
Étape 2:
Ajouter
dependencies
Fichier ---> Structure de Projet ---> (Maintenant, vous obtiendrez la liste des modules dans le côté gauche et en bas.) ---> (Sélectionnez
app
module) ---> sélectionnez l'onglet dépendances ---> cliquez sur le bouton ( + )- - - > sélectionnez le module dépendances,- - - > (sélectionnez le module que vous avez ajouté) ---> ok ---> okRemarque: Pour vérifier la dépendance est ajouté
votre
build.gradle
ressembleOriginalL'auteur
Dans mon cas, la chose suivante travaillé:
Mettre votre .aar fichier dans le répertoire libs(créer, si nécessaire), puis, ajoutez le code suivant dans votre construction.gradle(app):
OriginalL'auteur
Vous devez inclure le jcenter référentiel. Dans l'application du niveau de construction.gradle type:
Ces dépendances sont différents des autres.
Non, tapez-le dans votre application au niveau gradle
J'ai édité ma réponse. Veuillez vérifier maintenant.
jcenter() toujours obtenir par lui-même. Il ne résout pas ce problème.
OriginalL'auteur
Vous avez raison, votre
app
ne devrait pas définir votre AAR dépendances de la bibliothèque dansbuild.gradle
. C'est une pratique courante pour la 3e partie des bibliothèques comme OkHttp, de Picasso ou de RxJava. Ces bibliothèques sont, en fait, a leurs propres dépendances, tout comme votre AAR de la bibliothèque.Alors, comment se fait-OkHttp, de Picasso ou de RxJava ne demandez pas à votre Application pour y inclure leurs dépendances? Parce qu'ils ont compris leurs dépendances sur un POM fichier. Une POM fichier contient un fichier de configuration pour votre AAR, y compris votre artefact, groupe de nom, la version, et de ses dépendances.
Prenons OkHttp comme un exemple. OkHttp et ses dépendances sont stockés dans d'autres personnes de l'ordinateur. Aller à mvnrepository.com et de recherche pour OkHttp.
Vous trouverez OkHttp et ses POM fichier.
Lorsque vous incluez une bibliothèque dans votre
build.gradle()
, Gradle recherche de la bibliothèque sur les référentiels de définir dans le haut niveaubuild.gradle
. Pour OkHttp il a été stocké dansmavenCentral()
.Gradle va télécharger automatiquement les dépendances, vous n'avez pas besoin de spécifier de dépendance de bibliothèque sur votre projet d'Appli.
L'approche correcte est:
Vous pouvez utiliser le référentiel Maven local, héberger votre propre repo Maven, ou de publier votre bibliothèque sur Maven Central ou Bintray. inthecheesefactory a un bon tutoriel pour que.
Lorsque vous déployez votre AAR, vous devez inclure le fichier POM. Il peut être fait manuellement.
Ou à l'aide de android-maven-publier plugin Gradle.
En application au niveau
build.gradle
ajouter le VAB de votre bibliothèque.Vous et vos pairs devrait être en mesure d'utiliser
yourlibrary
maintenant.OriginalL'auteur