如何将带有远程依赖项(gradle)的Android库(aar)进行发布?

17

我正在尝试使用gradle构建一个包含远程依赖的aar文件。下面是一个示例构建脚本。如您所见,我有两个依赖项。我的问题是,在进行发布时,aar文件不包含远程依赖项,因此当我将aar文件包含在其他项目中时,会得到NoClassDefFound错误。

我发现如果将我的本地maven存储库中的jar复制到项目中的libs文件夹中,则该jar将包含在发布的aar中。如何将远程依赖项包含在aar文件中?我还读到过其他地方说这样出售依赖项是不好的做法,所以如果有更好的方法来完成我想做的事情,我完全可以接受。

buildscript {

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

apply plugin: 'android-library'

repositories {
    mavenCentral()
    mavenLocal()
}

android {
... omitted for brevity
}

dependencies {
    compile 'com.somepackage:someartifact:1.0'
    compile 'com.anotherpackage:artifact:2.0'
}

嗨@fxfilmxf,这里有任何进展吗?最好的。 - Giehl Man
有什么进展吗?我正在寻找解决办法,但是找不到任何方案... :/ - Adeel Turk
2个回答

7

尝试使用transitive属性:

compile ('group_id:artifact_id:version_name@aar'){
    transitive = true
}

1

您可以查看此链接:

使用Gradle解析aar库时未解决传递依赖项

您需要创建以下POM文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.sprezzat</groupId>
  <artifactId>app</artifactId>
  <version>1.0.0</version>
  <packaging>aar</packaging>
  <dependencies>
    <dependency>
      <groupId>com.bugsense.trace</groupId>
      <artifactId>bugsense</artifactId>
      <version>3.6</version>
      <scope>compile</scope>
    </dependency>
   </dependencies>
</project>

并将其部署到Maven。

之后,您可以像这样在Android应用程序的build.gradle配置中定义它:

compile ('com.somepackage:LIBRARY_NAME:1.0.0@aar'){
    transitive=true
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接