Подтвердить что ты не робот

Модуль 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 "не найдена."

(Я попытался умышленно поместить неправильный каталог и получил ту же ошибку)

4b9b3361

Ответ 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 поддерживает создание десятков вариантов, каждый со своим собственным уникальным именем пакета, файлами ресурсов и настраиваемым кодом, который значительно изменяет некоторые аспекты базового приложения, все время использующего общий базовый код.