Link 来自 Android Studio 中外部项目的模块
Link module from external project in Android Studio
我正在将我的所有项目从 Eclipse 迁移到 Android Studio(1.0.2,昨天刚下载),但外部模块有问题。
在 Eclipse 中,我有这样的工作区
所有活动、片段、模型和 类 都在 'Core' 项目中。 Core 项目需要一些库才能工作(例如 Google Play 服务、Facebook 或 Twitter),而 App 1、App 2、App 3 等只是 while 标签应用程序。这些应用程序除了图标、配置文件、加载图像等之外不包含任何内容。
我设法将 "Core" 应用及其所有依赖项作为新项目导入 Android Studio。当我构建核心时,我收到 0 个错误和 0 个警告
然后,我创建了新的项目调用 "Test" 和 link "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 并突出显示文件的依赖部分,如下所示
似乎当我尝试构建 "Test" 项目时,它无法找到 "Core" 项目的所有依赖项。你知道如何解决这个问题吗?
注意
- 我相信 "Core" 项目设置已经正确,因为我确实创建了 "Test 2" 应用程序并将 "Core" 项目导入同一根目录,同一项目。它工作正常。但这不是一个选择,因为我实际上有大约 20 多个白标应用程序。如果每个应用程序都有自己的应用程序,那么一个一个更新将非常困难 "Core".
我认为我包含的目录是正确的,否则,我会得到这个错误
"Error: Configuration with name 'default' not found."
(我故意放错了目录并得到了同样的错误)
您正在尝试为每个应用程序版本创建一个新项目,并将它们 link 到一个通用代码库。在这种情况下,最好使用 Gradle 的 "variant" 特性。有了它,每个应用都是"variant"核心应用,有自己的包名,有自己的资源文件,甚至有自己的src文件。
为此,您需要:
为您的核心应用修改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
}
}
}
创建app_1,app_2... app_x 个文件夹在 /src 中,每个文件夹都有自己的 AndroidManifest.xml、 /src 和 /res 文件夹。
- 更改 Android Studio 中的当前变体:
您可以在 Android Tools Project Site.
上找到有关构建变体的更多信息
我个人可以保证这种方法,因为我使用这种方法使得单个 Android Studio 项目支持构建数十种变体,每个变体都有自己独特的包名称、资源文件和自定义显着修改基础应用程序某些方面的代码,同时共享一个公共基础代码。
我正在将我的所有项目从 Eclipse 迁移到 Android Studio(1.0.2,昨天刚下载),但外部模块有问题。
在 Eclipse 中,我有这样的工作区
所有活动、片段、模型和 类 都在 'Core' 项目中。 Core 项目需要一些库才能工作(例如 Google Play 服务、Facebook 或 Twitter),而 App 1、App 2、App 3 等只是 while 标签应用程序。这些应用程序除了图标、配置文件、加载图像等之外不包含任何内容。
我设法将 "Core" 应用及其所有依赖项作为新项目导入 Android Studio。当我构建核心时,我收到 0 个错误和 0 个警告
然后,我创建了新的项目调用 "Test" 和 link "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 并突出显示文件的依赖部分,如下所示
似乎当我尝试构建 "Test" 项目时,它无法找到 "Core" 项目的所有依赖项。你知道如何解决这个问题吗?
注意
- 我相信 "Core" 项目设置已经正确,因为我确实创建了 "Test 2" 应用程序并将 "Core" 项目导入同一根目录,同一项目。它工作正常。但这不是一个选择,因为我实际上有大约 20 多个白标应用程序。如果每个应用程序都有自己的应用程序,那么一个一个更新将非常困难 "Core".
我认为我包含的目录是正确的,否则,我会得到这个错误
"Error: Configuration with name 'default' not found."
(我故意放错了目录并得到了同样的错误)
您正在尝试为每个应用程序版本创建一个新项目,并将它们 link 到一个通用代码库。在这种情况下,最好使用 Gradle 的 "variant" 特性。有了它,每个应用都是"variant"核心应用,有自己的包名,有自己的资源文件,甚至有自己的src文件。
为此,您需要:
为您的核心应用修改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 } } }
创建app_1,app_2... app_x 个文件夹在 /src 中,每个文件夹都有自己的 AndroidManifest.xml、 /src 和 /res 文件夹。
- 更改 Android Studio 中的当前变体:
您可以在 Android Tools Project Site.
上找到有关构建变体的更多信息我个人可以保证这种方法,因为我使用这种方法使得单个 Android Studio 项目支持构建数十种变体,每个变体都有自己独特的包名称、资源文件和自定义显着修改基础应用程序某些方面的代码,同时共享一个公共基础代码。