从Android Studio中的外部项目链接模块

时间:2015-02-19 05:39:05

标签: android android-studio android-gradle

我正在将我的所有项目从Eclipse迁移到Android Studio(1.0.2,只是昨天下载)但是有外部模块的问题。

在Eclipse中,我有像这样的工作区

enter image description here

所有活动,片段,模型和课程都在“核心”项目中。 Core项目需要一些库来运作(例如Google Play服务,Facebook或Twitter),而App 1,App 2,App 3等只是标签应用程序。这些应用程序不包含除图标,配置文件,加载图像等之外的任何内容。

我设法将“Core”应用及其所有依赖项导入Android Studio作为新项目。当我构建核心时,我得到0个错误和0个警告

enter image description here

然后,我创建新的项目调用“测试”并通过以下选定的答案链接“核心”项目

How to share a single library source across multiple projects

测试项目的setting.gradle

include ':Test'
include '..:..:AppyCore:Core'

测试项目的build.gradle

dependencies {
    compile 'com.android.support:support-v4:+'
    compile project('..:..:AppyCore:Core')
}

但是,当我重建项目时,我收到了这个错误

Error:(41, 0) Project with path ':SlidingMenu' could not be found in project '..:..:AppyCore:Core'

当我双击错误消息时,IDE会显示Core项目的build.gradle并突出显示该文件的依赖项部分,如下所示

enter image description here

似乎当我尝试构建“Test”项目时,它无法找到“Core”项目的所有依赖项。你知道怎么解决这个问题吗?

注意

  • 我认为“核心”项目设置已经正确,因为我确实创建了“测试2”应用并将“核心”项目导入到同一个根目录,同一个项目中。它没有任何问题。但这不是一个选项,因为我实际上有大约20多个白标应用程序。如果每个应用程序都拥有自己的“核心”,那么逐个更新将非常困难。
  • 我认为我包含的目录是正确的,否则,我会收到此错误

    “错误:找不到名称'default'的配置。”

(我试图故意放错目录并得到同样的错误)

1 个答案:

答案 0 :(得分:5)

您正在尝试为每个应用版本创建一个新项目,并将它们链接到一个公共代码库。在这种情况下,使用Gradle的“变体”功能要好得多。有了它,每个应用程序都是核心应用程序的“变体”,拥有自己的软件包名称,自己的资源文件,甚至是自己的src文件。

为此,您需要:

  1. 为您的核心应用修改 build.gradle

    android {
      productFlavors {
        // default BuildConfig variables
        all {
        }
        app_1 {
            applicationId 'com.yourcompany.app_1' //package name
            def variantName='app_1' //name of the variant
        }
        app_2 {
            applicationId 'com.yourcompany.app_2' //package name
            def variantName='app_2' //name of the variant
        }
      }
    }
    
  2. / src 中创建 app_1 app_2 ... app_x 文件夹,每个文件夹都有拥有 AndroidManifest.xml / src / res 文件夹。

  3. 更改Android Studio中的当前变体: enter image description here
  4. 您可以在Android Tools Project Site上找到有关构建变体的更多信息。

    我可以亲自担保这种方法,因为我已经使用过这样的方法,即单个Android Studio项目支持构建数十个变体,每个变体都有自己独特的包名,资源文件和自定义代码,可以显着修改某些方面基本应用程序,共享一个共同的基本代码。