gpt4 book ai didi

android - gradle构建不包含aar android库

转载 作者:行者123 更新时间:2023-12-03 04:41:08 25 4
gpt4 key购买 nike

我使用以下build.gradle将自定义android库发布到本地maven存储库中:

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
}

task wrapper(type: Wrapper) {
gradleVersion = '2.2.1'
}

apply plugin: "com.android.library"
apply plugin: "maven-publish"

group = "com.example"
//name = "mylibrary"
version = "0.0.1"

repositories {
mavenCentral()
mavenLocal()
}

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
versionCode 1
versionName project.version

minSdkVersion 14
targetSdkVersion 21
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile "org.slf4j:slf4j-api:1.7.5"
}

publishing {
publications {
android(MavenPublication) {
artifact bundleRelease

//FIXME manually add the dependencies as gradle doesn't find them in the default configuration
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')

configurations.default.allDependencies.each {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
}

运行 ./gradlew publishToMavenLocal时,将使用正确的内容(包括classes.jar)和正确的mylibrary-0.0.1.pom创建 ~/.m2/repository/com/example/mylibrary/0.0.1/mylibrary-0.0.1.aar文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>mylibrary</artifactId>
<version>0.0.1</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies>
</project>

但是,当我在另一个项目中将对该库的依赖项声明为 compile "com.example:mylibrary:0.0.1@aar"时,即使似乎已找到,也未包括该库或其依赖项。 ./gradlew dependencies产量
compile - Classpath for compiling the main sources.
\--- com.example:mylibrary:0.0.1

运行构建时,编译失败,因为找不到我的库中的类或其依赖项中的类。

我正在将Gradle 2.2.1与android构建工具1.0.0和新的maven-publish机制一起使用。

注意:由于缺少库中的类,因此它不仅仅是传递依赖项的问题,因此 this解决方案不起作用。
我希望从maven中获取该库,因此像 here这样在本地提供它不是一种选择(它对传递依赖没有帮助)。

最佳答案

没有足够的声誉来发表评论...

我没有使用过新的maven插件,但是如果您使用android-maven-plugin部署到bintray,则只需将仓库添加到build.gradle中(或者您可以要求他们将其存储在jcenter上,而您不需要必须做任何事情)。然后,您将可以使用transitive = true

关于android - gradle构建不包含aar android库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27676933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com