如何简化此过程,以便我的应用程序自动使用库最近生成的 .aar 文件?
选项 #1:专用库
第 1 步:将您的应用项目和库项目作为整个项目的公共根目录的子项目。出于此答案的目的,我将分别称它们为 app/ 和 library/。
第 2 步:在顶层(即公共根目录)中,有一个列出这些模块的 settings.gradle 文件:
include ':app', ':library'
第 3 步:在顶层,有一个 build.gradle 文件,用于设置 Gradle for Android 插件和任何其他常见的感兴趣的东西,例如:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
(请注意,上面的文件是您从原生 Android Studio 项目中获得的,由 IDE 创建)
步骤#3:在library/ 目录中,有一个使用com.android.library 插件的build.gradle 文件
第 4 步:在 app/ 目录中,有一个 build.gradle 文件,在其 dependencies 中包含 compile project(':library') 以拉入库
您的 AAR 可能是可交付成果,而不是应用程序(例如,库是供社区使用的开源库,而应用程序是演示应用程序)。在这种情况下,您可以在app/ 中使用debugCompile 来拉入本地库项目以进行调试构建,但让releaseCompile 从已发布的源中拉入AAR,以确认您可以从相同的东西构建AAR 的用户使用。
我的大部分 CWAC 库都是这样设置的(例如,cwac-richedit)。
选项 #2:在本地发布 AAR
您可以使用maven 插件和uploadArchives 任务上传到本地Maven 风格的repo:
apply plugin: 'maven'
uploadArchives {
repositories.mavenDeployer {
pom.groupId = PUBLISH_GROUP_ID
pom.artifactId = PUBLISH_ARTIFACT_ID
pom.version = PUBLISH_VERSION
repository(url: LOCAL_REPO)
}
}
在这里,我的常量是从gradle.properties 文件中提取的,LOCAL_REPO 是指向本地存储库的file:/// URL。然后您可以运行 gradle uploadArchives 来生成 AAR 并将其推送到本地 repo。
然后,您的应用可以在 repositories 闭包中有一个 maven { url LOCAL_REPO } 闭包,并且可以从那里拉入 AAR 工件,就好像它来自公共存储库(例如,Maven Central)。
我的 CWAC 库使用 uploadArchives 任务,但仅用于发布到我的 Amazon S3 托管的 Maven 存储库的本地镜像。
如果您真的想从 AAR 中工作,但又想从多个项目中这样做,则可以采用这种方法。请注意,您当然可以将其发布到其他类型的 Maven 存储库(例如 Sonatype 服务器)以供企业使用。
选项 #3:修改模块以指向其他地方的库
这是 Pavel Dudka 在his answer 中的方法。我没试过这个。即兴发挥,如果您想依赖来自多个应用程序的 库,这将是一个好方法,但您并不真正关心将实际的 AAR 作为分发的东西。 p>
而且我确信除了这三个之外还有其他选择。