Обязательно получить работу с Android-студией/Gradle еще не совсем понятно. Я должен сказать, что, как это работает, все еще довольно грязно, но я, наконец, получил его на работу после прочтения многих ответов.
Если у вас есть проект, который имеет следующие зависимости:
Пакет использует-SDK и пустое приложение является строгим минимумом для андроида-библиотеки:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mymodule">
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16"/>
<application />
</manifest>
Модули имеют такую структуру
- модуль/сборки (где все становятся встроенный)
- Модуль/src/main/java (фактический код)
- Модуль/src/main/res (макет ресурсов и т. д.)
- Модуль/SRC/главная/AndroidManifest.xml
- модуль/build.gradle (наш Gradle конфигурации)
Мой первый модуль в этой сборке.Gradle файл
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
} } apply plugin: 'android-library'
repositories {
mavenLocal()
mavenCentral() }
dependencies {
compile 'com.android.support:support-v4:13.0.0'
compile project(':SecondModule') }
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
Обратите внимание, что модуль depens по проекту (: SecondModule) Это означает, что в корневом каталоге проекта находится SecondModule, в котором есть также build.gradle файл.
The SecondModule build.gradle выглядит следующим образом.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android-library'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile 'com.android.support:support-v4:13.0.0'
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
Второй модуль не зависит ни от чего, кроме android support
. Обратите внимание, что в обоих проектах сборка использует mavenLocal()
и mavenCentral()
для построения, а не только buildscript. Разница с файлом build.gradle по умолчанию - com.android.support:support-v4:13.0.0
из maven вместо файла jar. Таким образом, мы можем спокойно добавить зависимость в каждом модуле, не опасаясь, что град добавит его n раз. Для этого вам нужно установить репозиторий Google и репозиторий поддержки Android.
MainApp Gradle выглядеть файл так:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile 'com.android.support:support-v4:13.0.0'
compile project(':MyModule')
compile project(':SecondModule')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
Этот файл приложения андроида плагин вместо андроида-библиотеки плагина. Если все в порядке, оно должно хорошо компилироваться и запускаться. Кроме того, поскольку проект находится в разработке, убедитесь, что у вас установлена последняя версия, и возможно, что в будущем этот ответ станет бессмысленным.
Убедитесь, что вы никогда не используете флеш-память андроида, но вместо этого используйте репозиторий maven. Недостатком является то, что для компиляции может потребоваться некоторое время, но оно будет работать.
Вы не знаете, как использовать град с 'android-library'. Я думаю, проблема в этом. –
Я действительно не понимаю, что вы имеете в виду, написав 'android-library'? – pepuch
Короче говоря, андроидная библиотека - это просто другой проект, который можно объединить с приложением. Все ресурсы объединяются с основным проектом. Во всяком случае, у меня есть идея. Я мог бы просто объединить все в один модуль вместо сложного процесса сборки. Главное отличие библиотеки android от android-приложения заключается в том, что в манифесте может не быть раздела приложения. Тем не менее, есть ошибка, которая заставляет область приложения присутствовать, поэтому я мог бы просто упростить все в одном проекте, и я разберу его как можно больше, пока он не сработает. –