如何发布带有远程依赖项 (gradle) 的 Android 库 (aar)?
Posted
技术标签:
【中文标题】如何发布带有远程依赖项 (gradle) 的 Android 库 (aar)?【英文标题】:How do I ship an Android Library (aar) with remote dependencies (gradle)? 【发布时间】:2014-07-27 08:12:03 【问题描述】:我正在尝试使用具有远程依赖关系的 gradle 构建一个 aar 文件。下面是一个示例构建脚本。如您所见,我有两个依赖项。我遇到的问题是,当我发布时,aar 文件不包含远程依赖项,所以当我在其他项目中包含 aar 文件时,我得到 NoClassDefFound 错误。
我发现如果我将 jar 从本地 maven repo 复制到项目中的 libs 文件夹中,那么 jar 确实会包含在 release 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,这里有任何程序吗?最佳 有什么进展吗?我正在寻找解决方案,但找不到任何.. :/ 【参考方案1】:尝试使用transitive
属性:
compile ('group_id:artifact_id:version_name@aar')
transitive = true
【讨论】:
【参考方案2】:您可以查看此链接:
Transitive dependencies not resolved for aar library using gradle
您必须按如下方式创建 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
【讨论】:
以上是关于如何发布带有远程依赖项 (gradle) 的 Android 库 (aar)?的主要内容,如果未能解决你的问题,请参考以下文章
带有 Gradle 的 POM 中缺少 Android 库依赖项