我们正在创建一个应用程序(实际上是2个),它分成两个独立的项目,但共享相同的GIT存储库(git root中的2个单独的文件夹)。它是一款适用于掌上电脑和一款适用于其他平台的应用但他们应该共享一些代码,如Utils,API调用等。
文件夹结构如下所示:
- GIT Root
- 项目(项目)
--- App 1(Android应用程序)
--- App 2(Android应用程序)
--- Common(Android库)
App1和App2应该能够从常见的代码中获取代码,当然不是其他方式。
尝试像上面这样做并使用Gradle,但它似乎不起作用。我知道为两个应用程序共享相同的git repo可能不是处理这种情况的最佳方式,但我在这里没有选择。
你认为这可能以某种方式做到吗? (也许我只是没有正确理解模块或类似的东西)
我是Gradle的新手,这使得这更难......
答案 0 :(得分:6)
如果所有三个项目都在同一个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库项目。在build.gradle
的{{1}}文件中添加以下行:
Common
将其他两个项目设置为Android应用程序,并将apply plugin: 'com.android.library'
项目作为依赖项包含。
Common
答案 1 :(得分:3)
你应该有三个git回购。 App1,App2和Common。
使用gradle使库项目通用。
apply plugin: 'com.android.library'
您可以使用android maven插件在本地构建aar并使其可供每个子应用使用。添加classpath '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
在本地安装库应用程序现在,父应用程序可以作为依赖项包含在子应用程序中。向build.gradle添加依赖项。
compile('com.foo.example:library:1.0.0-SNAPSHOT@aar') {transitive = true}
每次更改库应用程序时,都必须重新安装。然后,您必须重新同步您的子应用程序中的gradle文件。工具 - > Android - >使用Gradle文件同步项目