5

您好我有一个生成 AAR 的 Android 库项目。

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

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

AAR 使用 picasso,是否可以在生成 AAR 时也导出 AAR 的依赖项?

4

1 回答 1

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带有 XYZ 格式的版本号

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

于 2014-04-13T17:17:38.883 回答