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

标签 android android-studio android-gradle-plugin

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

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

enter image description here

所有 Activity 、 fragment 、模型和类都在“核心”项目中。 Core 项目需要一些库才能工作(例如 Google Play Service、Facebook 或 Twitter),而 App 1、App 2、App 3 等只是标记应用程序。这些应用程序除了图标、配置文件、加载图像等不包含任何内容。

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

enter image description here

然后,我创建一个名为“Test”的新项目,并按照从这个问题中选择的答案将“Core”项目链接到它

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

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

注意

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

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

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

最佳答案

您正在尝试为每个应用版本创建一个新项目,并将它们链接到一个通用代码库。在这种情况下,最好使用 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_1app_2...app_x文件夹,每个文件夹都有自己的拥有 AndroidManifest.xml/src/res 文件夹。

  3. 更改 Android Studio 中的当前变体: enter image description here

您可以在 Android Tools Project Site 上找到有关构建变体的更多信息.

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

关于android - 从 Android Studio 中的外部项目链接模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28599329/

相关文章:

android - 运行 MyProjectName [] : No task to execute is specified 时出错

android - 隐藏标题栏时删除 Android 应用程序上可见的底部填充

android - 粒子效果不渲染

android - 更新到 Android Studio Bumblebee 2021.1.1 后,Android Studio 中的 Gradle 项目同步出错

java - Mac OSX 上的 Android Studio 模拟器 (AVD) : AVD icon quickly appears and immediately disappears

gradle - 使用实现项目时,可传递引用不起作用

android - 发布最终应用程序后不显示广告

android - TelephoneNumberUtil 类有什么用?

android - 使用 Jack 时未生成 Dagger 2 组件

android - Android Studio-太旧的插件(Gradle)