Ich habe Fragen (Android Studio combine 2 .aar into one und andere) von verschiedenen Entwicklern geschrieben, aber ich habe keine definitive Antwort, die mir ermöglicht, eine AAR, die 1 oder mehrere AARs oder JARs (I kann mit JARs tun, da ich keine Ressourcen teilen muss, nur Klassen). Hier ist die app.gradle für mein Bibliotheksprojekt:Erstellen Sie eine AAR mit mehreren AARs/JARs
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')
}
Auch diese App ist ein Bibliotheksprojekt, das zwei andere Bibliotheksprojekte benötigt (‚Kern-release‘, ‚midware-release‘) und während ich war in der Lage Um eine AAR-Datei zu generieren, die ich in meiner Anwendung verwenden kann, konnte die Anwendung die Klassen der abhängigen Bibliotheksprojekte nicht finden. Daher musste ich die AARs der beiden Bibliotheksprojekte in meine Anwendung einfügen. Hier
ist das app.gradle Anwendungsprojekt (ohne die JAR-Dateien manuell hinzufügen), die nicht in der Lage ist, die abhängigen Projekte Klassen zu finden:
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')
}
Ich glaube nicht, das Bibliotheksprojekt der AAR-Datei in zieht die abhängigen Projekte (AAR oder JAR) und daher kann die Anwendung die Klassen nicht finden.
Ich las über transitive Abhängigkeit, aber ich konnte keine Beispielimplementierung finden, die mit meiner Situation helfen könnte.
Ich versuchte, aber ich bin nicht in der Lage, vorbei zu kommen 'Keine solche Eigenschaft: transitive für Klasse: org.gradle.api.internal.project.DefaultProject_Decorated' Fehler. Auch der Wechsel zu Standard-Wrapper in Build Tools -> Gradle Einstellungen von lokalen Gradle Verteilung hat nicht geholfen –
Können Sie es bitte versuchen: kompilieren (Projekt (': sdk3-debug')) {transitive = true} –
Dieses neue Format gewährleistet Gradle ist jetzt glücklich. Mein Anwendungsprojekt kann jedoch die Klassen im Bibliotheksprojekt (Midware), die sich in der AAR-Datei befinden, nicht finden. Auf die Klassen, die sich direkt in der AAR-Datei befinden, kann zugegriffen werden. Wie ich erwähnt habe, hat meine AAR-Datei zwei abhängige Projekte (Core und Midware). –