Android Studio и Gradle: добавьте внешние классы Java в основной проект Android

У меня есть несколько классов Java, которые находятся в собственном каталоге вне основного проекта (но в той же папке проекта).

Настройка папки выглядит так:

root
 |
 |
 |- Main project
 |
 |- Dir
 |   |-src
 |   |-libs
 |
 |- more android libs...

Я хочу включить классы Dir/src в основной проект.

Я пробовал это в файлах сборки Gradle:

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src', ':Dir/src']
...

Но безрезультатно.

Есть ли этому решение?


person Joakim Engstrom    schedule 03.09.2013    source источник


Ответы (2)


вы можете сделать свой Dir собственным модулем

добавьте include 'Dir' в свой settings.gradle

создайте build.gradle внутри вашего каталога Dir с этим содержимым apply plugin: java

теперь вы можете зайти в свои основные проекты build.gradle и добавить в зависимости: compile project(':Dir')


если ваш Dir использует материалы, связанные с Android, вы можете использовать функцию New > Module (щелкните правой кнопкой мыши по вашему проекту в Android Studio) Android Studio для создания библиотеки Android.

Но я еще не тестировал эту функцию. Если Android Studio выдает исключение при попытке использовать новый модуль, попробуйте обновить Android Studio, в последней версии это работает для меня.


Вы также можете ознакомиться с руководством пользователя Gradle и Справочник по DSL очень полезны для знакомства с Gradle и его понимания.

person Dodge    schedule 03.09.2013
comment
На самом деле удалось понять это до того, как вы опубликовали свой ответ, но спасибо за дополнительные советы. Это, безусловно, лучший способ пойти. Спасибо еще раз. - person Joakim Engstrom; 03.09.2013
comment
Нет проблем, для этого и существует SO. ;) - Спасибо, что приняли ответ. :) - person Dodge; 03.09.2013

Я основываюсь на ответе Доджа и фактически публикую код Gradle, который исправил это:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'java'

sourceCompatibility = '1.6'
targetCompatibility = '1.6'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

sourceSets {
    main {
        java {
           srcDirs = ['src']
        }
    }
}

buildDir = 'bin'
person Joakim Engstrom    schedule 03.09.2013