Question

Bonjour, j'ai un projet de bibliothèque Android qui produit un AAR.

Tout va bien mais lorsque j'utilise l'AAR dans un autre projet, j'obtiens cette erreur :

java.lang.NoClassDefFoundError: com.squareup.picasso.Picasso

L'AAR utilise Picasso, est-il possible d'exporter également les dépendances de l'AAR lors de sa génération ?

Était-ce utile?

La solution

Comment peut-on créer un dépôt Maven local.

AVERTISSEMENT:la recette suivante fonctionne, mais pourrait probablement être améliorée, comme je le suis loin d'un expert Maven.J'ai élaboré cette approche l'année dernière pour l'utiliser avec mes bibliothèques CWAC.

Étape 1:Ajouter classpath 'com.github.dcendents:android-maven-plugin:1.0' à ton buildscript dependencies bloc dans le projet de votre bibliothèque build.gradle déposer.Ajoutez également version et group déclarations pour fournir ces informations sur votre AAR.

Étape 2:Utiliser gradle install pour compiler l'AAR et l'installer dans le référentiel Maven local par défaut.

Étape 3:Normalement, vous ajouteriez mavenLocal() au dependencies bloc de votre projet d'application pour récupérer l'AAR via son ID d'artefact.Cela fonctionne peut-être à nouveau, même s'il a été un peu cassé.Utilisez plutôt maven { url "${System.env.HOME}/.m2/repository" } comme solution de contournement à court terme.

Ainsi, par exemple, votre projet de bibliothèque build.gradle le fichier peut contenir :

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
        classpath 'com.github.dcendents:android-maven-plugin:1.0'
    }
}

apply plugin: 'android-library'
apply plugin: 'android-maven'

version '0.4.0'
group 'some.likely.group.name.goes.here'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.squareup.picasso:picasso:2.2.0'
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
  // as normal
}

Vous utiliseriez gradle install pour publier le JAR sur votre dépôt Maven local.Votre projet d'application contiendra alors les éléments suivants dans son build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
    maven { url "${System.env.HOME}/.m2/repository" } // mavenLocal()
}

dependencies {
    compile 'some.likely.group.name.goes.here:name-of-library:0.4.0'
}

android {
    // as normal
}

où tu remplaces :

  • some.likely.group.name.goes.here avec quelque chose

  • 0.4.0 avec un numéro de version au format X.Y.Z

  • name-of-library sera le nom du répertoire contenant le projet de bibliothèque Android (par exemple, presentation ou foo)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top