Модуль Link из внешнего проекта в Android Studio
Я переношу весь свой проект из Eclipse в Android Studio (1.0.2, просто загружаю его вчера), но проблема с внешним модулем.
В Eclipse у меня есть рабочее пространство, подобное этому
![enter image description here]()
Все действия, фрагменты, модели и классы находятся в проекте "Core" . Основной проект требовал, чтобы некоторые библиотеки работали (например, Google Play, Facebook или Twitter). Хотя приложение 1, приложение 2, приложение 3 и т.д. - это всего лишь приложения для ярлыков. Это приложение не содержит ничего, кроме значков, файлов конфигурации, загрузки изображений и т.д.
Мне удалось импортировать приложение "Core" и все его зависимости к Android Studio в качестве нового проекта. Когда я создаю ядро, , я получил 0 ошибок и 0 предупреждений
![enter image description here]()
Затем я создаю новый проект "Test" и ссылку на проект "Core" , следуя выбранному ответу на этот вопрос
Как разделить один источник библиотеки по нескольким проектам
настройка .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 показывает мне build.gradle проекта Core и выделяет часть зависимостей файла следующим образом
![enter image description here]()
Похоже, что когда я пытаюсь построить проект "Тест", он не может найти все зависимости проекта "Core" . Вы знаете, как это исправить?
Примечание
- Я считаю, что настройка "Core" уже правильная, потому что я создал приложение "Test 2" и импортировал проект "Core" в тот же корневой каталог, тот же проект. Он работал без каких-либо проблем. Но это не вариант, потому что у меня на самом деле около 20+ приложений с ярлыками. Это будет очень сложно обновить один за другим, если каждое из этих приложений имеет собственный "ядро".
-
Я думаю, что каталог, который я включаю, является правильным, в противном случае я вместо этого получу эту ошибку
"Ошибка: Конфигурация с именем" default "не найдена."
(Я попытался умышленно поместить неправильный каталог и получил ту же ошибку)
Ответы
Ответ 1
Вы пытаетесь создать новый проект для каждой версии приложения и связать его с общей базой кода. В этом случае гораздо лучше использовать "вариант" функции Gradle. С его помощью каждое приложение представляет собой "вариант" основного приложения с собственным именем пакета, его собственными файлами ресурсов и даже собственными файлами 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:
![enter image description here]()
Дополнительную информацию о вариантах построения можно найти на Сайт проекта Android Tools.
Я могу лично поручиться за этот подход, поскольку я использовал его так, что один проект Android Studio поддерживает создание десятков вариантов, каждый со своим собственным уникальным именем пакета, файлами ресурсов и настраиваемым кодом, который значительно изменяет некоторые аспекты базового приложения, все время использующего общий базовый код.