为了账号安全,请及时绑定邮箱和手机立即绑定

使用Gradle无法解析Aar库的传递依赖

使用Gradle无法解析Aar库的传递依赖

尚方宝剑之说 2019-12-21 11:00:08
我调查了一段时间,可能在这里看到了与aar和可传递依赖项有关的最流行的答案,但是对于我来说,如何使它起作用仍然不清楚。所以:我有给定gradle配置的android库:apply plugin: 'android-library'apply plugin: 'android-maven'version = "1.0.0"group = "com.somepackage"buildscript {    repositories {        mavenCentral()        mavenLocal()    }    dependencies {        classpath 'com.github.dcendents:android-maven-plugin:1.0'    }}android {    compileSdkVersion 19    buildToolsVersion '19.0.3'    defaultConfig {        minSdkVersion 10    }}repositories {    maven { url 'http://www.bugsense.com/gradle/' }}dependencies {    provided 'com.google.android.gms:play-services:+'    provided 'com.android.support:appcompat-v7:+'    compile 'com.google.code.gson:gson:2.2.4'    compile 'com.bugsense.trace:bugsense:3.6'    compile 'commons-net:commons-net:3.3'}然后,我将其部署到本地Maven存储库gradle install。部署库的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>在手机上部署应用程序后,我得到NoClassDefFoundError了属于我的Android库的编译依赖项的类。使用gradle dependencies以下命令检查我的android应用程序依赖项:apk - Classpath packaged with the compiled main classes.+--- com.google.android.gms:play-services:+ -> 4.3.23|    \--- com.android.support:support-v4:19.0.1 -> 19.1.0+--- com.android.support:appcompat-v7:+ -> 19.1.0|    \--- com.android.support:support-v4:19.1.0\--- com.somepackage:LIBRARY_NAME:1.0.0根据上面的树,没有检测到所有传递依赖。问题出在哪里,应如何正确解决?
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

我已经通过transitive为aar依赖项设置属性解决了我的问题:


compile ('com.somepackage:LIBRARY_NAME:1.0.0@aar'){

    transitive=true

}


查看完整回答
反对 回复 2019-12-21
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

您不应该使用“ @aar”,如果使用“ @”成为“ 仅工件 ” 符号,那么如果您想使用“ @”并且希望具有依赖项可传递,则应添加“ transitive = true”


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 1207 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信