如何在 Android Studio 中并行开发库和应用程序?
How to develop a library and an application side-by-side in Android Studio?
我目前正在开发一个库(没有活动)和一个依赖于该库的应用程序。目前,我将这些作为单独的项目,我可以将生成的 .aar 文件从库项目复制到应用程序项目的 libs 文件夹中,然后重新同步 gradle。但是,这是一个低效的过程,因为每次对库项目进行更改时,我都必须重建并手动重新复制 .aar 文件。我的问题是,如何简化此过程,以便我的应用程序自动使用库最近生成的 .aar 文件?
1) 在您应用的 settings.gradle
中将您的库作为项目包含在内:
include ':lib-project'
project(':lib-project').projectDir = new File('../path/to/lib/project/lib-project')
lib 项目的路径是相对于文件系统settings.gradle
位置的
2) 在您应用的 build.gradle
中添加 lib 项目作为依赖项:
dependencies {
compile project(':lib-project')
...
}
how can I streamline this process so that my application automatically uses the library's most recently generated .aar file?
选项 #1:专用库
第 1 步:将您的应用程序项目和库项目作为整个项目的公共根目录的子目录。出于此答案的目的,我将分别称它们为 app/
和 library/
。
步骤 #2:在顶层(即公共根目录),有一个列出这些模块的 settings.gradle
文件:
include ':app', ':library'
第 3 步:在顶层,有一个 build.gradle
文件,它为 Android 插件设置 Gradle 和任何其他感兴趣的常见内容,例如:
// 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 风格的仓库:
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 并将其推送到本地仓库。
然后,您的应用程序可以在 repositories
闭包中有一个 maven { url LOCAL_REPO }
闭包,并且可以从那里拉入 AAR 工件,就好像它来自 public 存储库一样(例如,Maven Central)。
我的 CWAC 库使用 uploadArchives
任务,但仅用于发布到我的 Amazon S3 托管的 Maven 存储库的本地镜像。
如果您真的想在 AAR 之外工作,但又想在多个项目中这样做,则可以采用这种方法。请注意,您当然可以将其发布到其他类型的 Maven 存储库(例如,Sonatype 服务器)以供企业使用。
选项 #3:Mod Mod指向其他地方库的规则
这是 Pavel Dudka 在 中的方法。我没试过这个。如果您想依赖来自多个应用程序的 库 ,这将是一个很好的方法,但您并不真正关心将实际的 AAR 作为分发的东西.
而且我敢肯定除了这三个之外还有其他选择。
我目前正在开发一个库(没有活动)和一个依赖于该库的应用程序。目前,我将这些作为单独的项目,我可以将生成的 .aar 文件从库项目复制到应用程序项目的 libs 文件夹中,然后重新同步 gradle。但是,这是一个低效的过程,因为每次对库项目进行更改时,我都必须重建并手动重新复制 .aar 文件。我的问题是,如何简化此过程,以便我的应用程序自动使用库最近生成的 .aar 文件?
1) 在您应用的 settings.gradle
中将您的库作为项目包含在内:
include ':lib-project'
project(':lib-project').projectDir = new File('../path/to/lib/project/lib-project')
lib 项目的路径是相对于文件系统settings.gradle
位置的
2) 在您应用的 build.gradle
中添加 lib 项目作为依赖项:
dependencies {
compile project(':lib-project')
...
}
how can I streamline this process so that my application automatically uses the library's most recently generated .aar file?
选项 #1:专用库
第 1 步:将您的应用程序项目和库项目作为整个项目的公共根目录的子目录。出于此答案的目的,我将分别称它们为 app/
和 library/
。
步骤 #2:在顶层(即公共根目录),有一个列出这些模块的 settings.gradle
文件:
include ':app', ':library'
第 3 步:在顶层,有一个 build.gradle
文件,它为 Android 插件设置 Gradle 和任何其他感兴趣的常见内容,例如:
// 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 风格的仓库:
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 并将其推送到本地仓库。
然后,您的应用程序可以在 repositories
闭包中有一个 maven { url LOCAL_REPO }
闭包,并且可以从那里拉入 AAR 工件,就好像它来自 public 存储库一样(例如,Maven Central)。
我的 CWAC 库使用 uploadArchives
任务,但仅用于发布到我的 Amazon S3 托管的 Maven 存储库的本地镜像。
如果您真的想在 AAR 之外工作,但又想在多个项目中这样做,则可以采用这种方法。请注意,您当然可以将其发布到其他类型的 Maven 存储库(例如,Sonatype 服务器)以供企业使用。
选项 #3:Mod Mod指向其他地方库的规则
这是 Pavel Dudka 在
而且我敢肯定除了这三个之外还有其他选择。