wutiarn
@wutiarn

Как настроить gradle для работы с несколькими модулями?

Добрый день. Недавно решил таки разобраться с Android и написать для себя одно приложение. И в процессе возникла необходимость подключить вот эту библиотеку.

Как видите, это не просто jar, а полноценный модуль grandle. Кроме того, эта библиотека зависит от другой - Silk. Ну что делать. Начал ее пытаться ставить. Ну и как вы уже догадались, с полпинка оно не завелось. Сначала пришлось разбираться с такими вещами как:
apply plugin: 'com.android.library'
или
applicationId "com.afollestad.cardsui"
в build.gradle. В итоге он превратился в это:

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

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
}


Idea все это подхватила, скомпилировала. Я уж было обрадовался, ан нет. Оказывается в других модулях (в основной библиотеке/моем приложении) не ресолвятся импорты (и идея, и компилятор ругается) из Silk. Притом, с зависимостями у модуля, который пытается получить доступ к Silk все нормально:
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
    compile project(':slik')
}


Ошибку выкидывает сам компилятор Java. Gradle же на этот импорт не ругается. Значит он ресолвится.

С модулем Slik было проделано все, что только пришло мне в голову. Clean и последующий Compile выполняются без ошибок.

В общем бьюсь над этим уже час пятый, наверное. Достало жутко. Есть у кого идеи?
  • Вопрос задан
  • 3495 просмотров
Решения вопроса 1
wutiarn
@wutiarn Автор вопроса
Так. Понятно.

После суток гугления нашел причину своих бед. В build.gradle всех библиотек андроида должен использоваться плагин android-library, а не android.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы