Я видел вопросы (Android Studio combine 2 .aar into one и другие), размещенные различными разработчиками, но я не видел окончательного ответа, который позволяет мне создать AAR, который включает в себя 1 или более AAR или JAR (I может работать с JAR, поскольку мне не нужно делиться никакими ресурсами, а только с классами). Вот app.gradle моей библиотеки проекта:Создайте AAR с несколькими AAR/JAR
apply plugin: 'com.android.library'
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 21
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.google.code.gson:gson:2.1'
compile ('libs/eventbus.jar')
compile project(':core-release')
compile project(':midware-release')
}
Опять же, это приложение является проект библиотеки, который нуждается в двух других проектов библиотеки («ядро-релиз», «midware-релиз») и в то время как я был в состоянии для создания одного файла AAR, который я могу использовать в своем приложении, приложение не смогло найти классы зависимых библиотек, поэтому мне пришлось добавить AAR в два проекта библиотеки в мое приложение.
Вот app.gradle проект приложения (без добавления JARs вручную), который не может найти классы проектов зависимых:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.app.sample"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile files('libs/eventbus.jar')
compile project(':sdk3-debug')
}
Я не думаю, что файл AAR проекта библиотеки тянет в зависимые проекты (AAR или JAR), и, следовательно, приложение не может найти классы.
Я читал о транзитивной зависимости, но мне не удалось найти пример реализации, который может помочь в моей ситуации.
Я пробовал, но я не могу пройти мимо 'Нет такого свойства: переходный для класса: org.gradle.api.internal.project.DefaultProject_Decorated' error. Даже переключение на оболочку градиента по умолчанию в Build Tools -> Настройки Gradle из локального распределения градиентов не помогли –
Можете ли вы попробовать: compile (project (': sdk3-debug')) {transitive = true} –
Этот новый формат обеспечивает град теперь счастлив. Однако мой проект приложения не может найти классы в проекте библиотеки (middleware), который находится в файле AAR. Доступны классы, которые находятся непосредственно в файле AAR. Как я уже упоминал, у моего файла AAR есть два зависимых проекта (core и middleware). –