Android库AAR取决于另一个库

时间:2014-04-13 12:32:59

标签: java android library-project aar

您好我有一个Android库项目,可以生成AAR。

一切都很好但是当我在另一个项目中使用AAR时,我收到了这个错误:

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

AAR使用毕加索,是否可以在生成AAR时导出AAR的依赖关系?

1 个答案:

答案 0 :(得分:6)

  

如何设置本地maven回购。

警告:以下方法有效,但可能会使用改进,因为我远来自Maven专家。我去年制定了这种方法,用于我的CWAC库。

步骤1:将classpath 'com.github.dcendents:android-maven-plugin:1.0'添加到您项目库项目的buildscript文件中的dependencies build.gradle块。同时添加versiongroup语句,以提供有关您的AAR的信息。

步骤2:使用 gradle install 编译AAR并将其安装在默认的本地Maven存储库中。

步骤3:通常,您可以将mavenLocal()添加到应用程序项目的dependencies块,以通过其工件ID获取AAR。这可能会再次起作用,虽然它已经被打破了一点。相反,请使用maven { url "${System.env.HOME}/.m2/repository" }作为短期解决方法。

因此,例如,您的库项目build.gradle文件可能包含:

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
}

您可以使用 gradle install 将JAR发布到您当地的Maven仓库。然后,您的应用程序项目将在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
}

你替换的地方:

  • some.likely.group.name.goes.here

  • 0.4.0,版本号为X.Y.Z格式

  • name-of-library将是包含Android库项目的目录名称(例如presentationfoo