两个 android 项目使用 gradle 在同一个存储库中共享公共模块
Two android projects sharing common module in same repository using gradle
我们正在创建一个应用程序(实际上是 2 个),该应用程序分为 2 个独立的项目,但共享相同的 GIT 存储库(git 根目录中的 2 个独立文件夹)。它是一个用于手持设备的应用程序,一个用于另一个平台的应用程序。但他们应该共享一些代码,例如 Utils、API 调用等
文件夹结构如下所示:
-GIT根目录
-- 项目(项目)
--- 应用 1(Android 申请)
--- 应用 2(Android 申请)
--- 通用(Android 库)
App1 和 App2 应该能够从普通方式访问代码,当然不能从其他方式访问代码。
尝试像上面那样做并使用 Gradle 但它似乎不起作用。我知道为两个应用程序共享相同的 git 存储库可能不是处理这种情况的最佳方式,但我在这里别无选择。
你觉得这样可以吗? (也许我只是没有正确理解模块或类似的东西)
我是 Gradle 的新手,这让这更难..
您应该为此准备三个 git 存储库。 App1、App2 和 Common。
使用 gradle 共享库项目。
apply plugin: 'com.android.library'
您可以使用 android maven 插件在本地构建 aar 并使其可用于每个 child 应用程序。添加类路径 'com.github.dcendents:android-maven-plugin:1.2'
和 apply plugin: 'com.github.dcendents.android-maven'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
classpath 'com.github.dcendents:android-maven-plugin:1.2'
}
}
apply plugin: 'com.github.dcendents.android-maven'
定义图书馆应用程序的组和版本
group = 'com.foo.example'
version = '1.0.0-SNAPSHOT'
使用 ./gradlew installDebug
在本地安装图书馆应用程序
Child 应用
现在 parent 应用程序可以作为依赖项包含在 child 应用程序中。添加对 build.gradle 的依赖。
compile('com.foo.example:library:1.0.0-SNAPSHOT@aar') {transitive = true}
每次您对图书馆应用程序进行更改时,您都必须重新安装它。然后,您必须在 children 应用程序中重新同步 gradle 文件。工具 -> Android -> 将项目与 Gradle 个文件
同步
如果所有三个项目都在同一个 Git 存储库中,这并不难做到。以下是您的项目应该如何设置的框架:
App1 (Android application)
|_ build.gradle
|_ src
App2 (Android application)
|_ build.gradle
|_ src
Common (Android library)
|_ build.gradle
|_ src
settings.gradle
build.gradle
顶层 build.gradle
文件可以具有您将用于所有子项目的通用 gradle 设置
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
}
allprojects {
repositories {
mavenCentral()
}
}
确保 settings.gradle
文件包含您的所有项目:
include ':App1'
include ':App2'
include ':Common'
将 Common
设置为 Android 库项目。在 Common
的 build.gradle
文件中添加行:
apply plugin: 'com.android.library'
将其他两个项目设置为 Android 应用程序,并将 Common
项目作为依赖项包含在内。
apply plugin: 'com.android.application'
dependencies {
compile project(':Common')
:
:
}
我们正在创建一个应用程序(实际上是 2 个),该应用程序分为 2 个独立的项目,但共享相同的 GIT 存储库(git 根目录中的 2 个独立文件夹)。它是一个用于手持设备的应用程序,一个用于另一个平台的应用程序。但他们应该共享一些代码,例如 Utils、API 调用等
文件夹结构如下所示:
-GIT根目录
-- 项目(项目)
--- 应用 1(Android 申请)
--- 应用 2(Android 申请)
--- 通用(Android 库)
App1 和 App2 应该能够从普通方式访问代码,当然不能从其他方式访问代码。
尝试像上面那样做并使用 Gradle 但它似乎不起作用。我知道为两个应用程序共享相同的 git 存储库可能不是处理这种情况的最佳方式,但我在这里别无选择。
你觉得这样可以吗? (也许我只是没有正确理解模块或类似的东西)
我是 Gradle 的新手,这让这更难..
您应该为此准备三个 git 存储库。 App1、App2 和 Common。
使用 gradle 共享库项目。
apply plugin: 'com.android.library'
您可以使用 android maven 插件在本地构建 aar 并使其可用于每个 child 应用程序。添加类路径 'com.github.dcendents:android-maven-plugin:1.2'
和 apply plugin: 'com.github.dcendents.android-maven'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
classpath 'com.github.dcendents:android-maven-plugin:1.2'
}
}
apply plugin: 'com.github.dcendents.android-maven'
定义图书馆应用程序的组和版本
group = 'com.foo.example'
version = '1.0.0-SNAPSHOT'
使用 ./gradlew installDebug
在本地安装图书馆应用程序Child 应用
现在 parent 应用程序可以作为依赖项包含在 child 应用程序中。添加对 build.gradle 的依赖。
compile('com.foo.example:library:1.0.0-SNAPSHOT@aar') {transitive = true}
每次您对图书馆应用程序进行更改时,您都必须重新安装它。然后,您必须在 children 应用程序中重新同步 gradle 文件。工具 -> Android -> 将项目与 Gradle 个文件
同步如果所有三个项目都在同一个 Git 存储库中,这并不难做到。以下是您的项目应该如何设置的框架:
App1 (Android application)
|_ build.gradle
|_ src
App2 (Android application)
|_ build.gradle
|_ src
Common (Android library)
|_ build.gradle
|_ src
settings.gradle
build.gradle
顶层 build.gradle
文件可以具有您将用于所有子项目的通用 gradle 设置
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
}
allprojects {
repositories {
mavenCentral()
}
}
确保 settings.gradle
文件包含您的所有项目:
include ':App1'
include ':App2'
include ':Common'
将 Common
设置为 Android 库项目。在 Common
的 build.gradle
文件中添加行:
apply plugin: 'com.android.library'
将其他两个项目设置为 Android 应用程序,并将 Common
项目作为依赖项包含在内。
apply plugin: 'com.android.application'
dependencies {
compile project(':Common')
:
:
}