Два проекта Android с общим модулем в одном хранилище с использованием gradle

Мы создаем приложение (фактически 2), которое разбивается на два отдельных проекта, но использует один и тот же репозиторий GIT (2 отдельные папки в git root). Это одно приложение для карманных компьютеров и одно для другой платформы. Но они должны делиться некоторыми кодами, такими как Utils, вызовы API и т. Д.

Структура папки выглядит следующим образом:

Жесткий корень
– Проект (проект)
— Приложение 1 (приложение для Android)
— Приложение 2 (приложение для Android)
— Общий (Android-библиотека)

App1 и App2 должны иметь возможность получать код от обычного, но не по-другому.

Пытался сделать, как показано выше, и использовать Gradle, но он, похоже, не работает. Я знаю, что совместное использование одного и того же git-репо для обоих приложений может быть не лучшим способом справиться с этим сценарием, но у меня нет никаких параметров здесь.

Считаете ли вы, что это возможно сделать? (Возможно, я просто неправильно понимаю модули или что-то в этом роде)

Я новичок в Gradle, что делает это еще сложнее.

Это не так сложно сделать, если все три проекта находятся в одном репозитории Git. Вот скелет о том, как должны быть настроены ваши проекты:

App1 (Android application) |_ build.gradle |_ src App2 (Android application) |_ build.gradle |_ src Common (Android library) |_ build.gradle |_ src settings.gradle build.gradle 

Файл build.gradle верхнего уровня может иметь общие настройки градиента, которые вы будете использовать для всех подпроектов

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' } } allprojects { repositories { mavenCentral() } } 

Убедитесь, что файл settings.gradle включает в себя все ваши проекты:

 include ':App1' include ':App2' include ':Common' 

Common настройка для проекта библиотеки Android. В файле build.gradle для Common добавьте строку:

 apply plugin: 'com.android.library' 

Установите два других проекта в качестве приложений для Android и включите Common Project в качестве зависимости.

 apply plugin: 'com.android.application' dependencies { compile project(':Common') : : } 

Для этого нужно иметь три git-repos. App1, App2 и Common.

Сделайте общий проект библиотеки, используя град.

 apply plugin: 'com.android.library' 

Вы можете использовать плагин android maven для сборки aar локально и сделать его доступным для каждого дочернего приложения. Добавить classpath 'com.github.dcendents:android-maven-plugin:1.2' И apply plugin: 'com.github.dcendents.android-maven'

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' classpath 'com.github.dcendents:android-maven-plugin:1.2' } } apply plugin: 'com.github.dcendents.android-maven' 

Определить группу и версию приложения библиотеки

 group = 'com.foo.example' version = '1.0.0-SNAPSHOT' 

Установить приложение библиотеки локально, используя ./gradlew installDebug

Приложения для детей

Теперь родительское приложение может быть включено в дочернее приложение в качестве зависимости. Добавьте зависимость для build.gradle.

 compile('com.foo.example:library:1.0.0-SNAPSHOT@aar') {transitive = true} 

Каждый раз, когда вы вносите изменения в приложение библиотеки, вам придется его переустановить. Затем вам нужно повторно синхронизировать файлы градиента в приложении для детей. Инструменты -> Android -> Синхронизация проекта с файлами Gradle

Intereting Posts