Android库AAR取决于另一个库

red*_*nzz 5 java android library-project aar

嗨我有一个Android库项目,它生成一个AAR.

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

java.lang.NoClassDefFoundError: com.squareup.picasso.Picasso
Run Code Online (Sandbox Code Playgroud)

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

Com*_*are 6

如何设置当地的maven回购.

警告:以下配方有效,但可能会使用改进,因为我远非 Maven专家.去年,我在我的CWAC库中使用了这种方法.

步骤1:在库项目的文件中添加classpath 'com.github.dcendents:android-maven-plugin:1.0'到您的buildscript dependenciesbuild.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
}
Run Code Online (Sandbox Code Playgroud)

您可以使用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
}
Run Code Online (Sandbox Code Playgroud)

在哪里替换:

  • some.likely.group.name.goes.here 有点东西

  • 0.4.0 版本号为XYZ格式

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