2013-12-02 5 views
3

Каков предпочтительный способ совместного использования какого-либо кода (например, класса Utils) между двумя проектами при создании двух приложений с использованием Gradle для сборки?В Android, компиляция с Gradle, как разделить код между проектами?

Могу ли я сделать это без создания дополнительных файлов jar? Я просто хочу, чтобы мой код сидел за пределами проектов приложений, был импортирован/скомпилирован в оба проекта приложения. Или это просто невозможно?

Я знаком с подходом, который использует проекты jars или Android, но оба кажутся немного громоздкими.

+0

Вы можете поместить общий код в подпроект Gradle. – CommonsWare

ответ

3

Мой любимый способ сделать это - сохранить его в местном репозитории Maven. Репо может даже жить в вашем SCM, так что это одно и то же на рабочих пространствах.

Создать новые Android студийного проекта, а затем установить его в качестве проекта Maven вашего build.gradle конфигурации:

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.6.+' 
    } 
} 
apply plugin: 'android-library' 
apply plugin: 'maven' 

repositories { 
    mavenCentral() 
} 

configurations { 
    archives { 
     extendsFrom configurations.default 
    } 
} 

group = 'com.mypackage.mylibrary' 
version = '1.0.0' 

uploadArchives { 
    configuration = configurations.archives 
    repositories { 
     mavenDeployer { 
      repository(url: uri("relative/path/to/localrepo")) 
      pom.project { 
       artifactId 'mylibrary' 
       name 'My Library' 
       packaging 'aar' 
      } 
     } 
    } 
} 
android { 
    // copy old android config here 
} 

Вам нужно развернуть библиотеку, прежде чем использовать его. Сделайте это с помощью задачи uploadArchives [./gradlew uploadArchives]

Теперь вы должны быть в состоянии использовать эту библиотеку в любом проекте, делая это:

repositories { 
    maven { url 'relative/path/to/localrepo' } 
} 
dependencies { 
    compile ('com.mypackage.mylibrary:1.0.0') 
} 

При внесении изменений в библиотеку, вы» придется повторно развернуть (uploadArchives) с новой версией, а затем обновить ссылку зависимости в любом проекте, нуждающемся в новой версии.

Смежные вопросы