簡體   English   中英

如何發送具有遠程依賴項(gradle)的Android庫(aar)?

[英]How do I ship an Android Library (aar) with remote dependencies (gradle)?

我正在嘗試使用具有遠程依賴關系的gradle構建aar文件。 下面是一個示例構建腳本。 如您所見,我有兩個依賴項。 我遇到的問題是當我發布時,aar文件不包含遠程依賴項,所以當我在其他項目中包含aar文件時,我得到NoClassDefFound錯誤。

我發現如果我將jar從我當地的maven repo復制到我項目中的libs文件夾,那么jar確實會包含在發布版本中。 如何在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'
}

嘗試使用transitive屬性:

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

你可以查看這個鏈接:

使用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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM