ich eine App A haben, die eine Bibliothek verwendet C-Bibliothek C eine Aktivität enthält, die eine Ressource aus der Bibliothek erfordert D.findViewById gibt null zurück, für das Layout in Abhängigkeit
Ich würde die Ressourcen von D erwarten in C gebündelt werden , aber erhalten Sie eine Null, wenn Sie innerhalb von C findViewById(R.id.resource_from_d)
tun. Wie kann ich das zum Funktionieren bringen?
C hat nicht die Standardprojektstruktur, aber C enthält selbst keine Ressourcen. Und ich spezifizierte sourceSets { main { java.srcDirs = ['src'] }}
in der build.gradle für C.
Ich habe auch proguard und minifyEnabled auf false gesetzt, um zu vermeiden, dass irgendwelche Ressourcen irrtümlich entfernt werden.
Ich habe auch versucht, transitive = wahr für alle transitiven Abhängigkeiten, aber kein Glück. Was kann ich tun, damit dies funktioniert?
Dies ist die build.gradle von C, die auf den Ressourcen von D. hängt
apply plugin: 'com.android.library'
android {
compileSdkVersion 17
buildToolsVersion "23.0.2"
compileOptions.encoding = 'windows-1252'
defaultConfig {
minSdkVersion 17
targetSdkVersion 17
}
buildTypes {
release {
minifyEnabled false
}
}
lintOptions {
abortOnError false
}
sourceSets {
main {
java.srcDirs = ['src']
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_6
targetCompatibility JavaVersion.VERSION_1_6
}
dexOptions {
preDexLibraries = false
}
}
dependencies {
compile project(':d')
}
Die Projektstruktur von C nicht der Standard ist, also, warum ich die sourceSets für die Quellen hinzugefügt. C enthält jedoch keine eigenen Ressourcen.
haben Sie das Recht, den Import s
R
nutzen können 'R'? oder versuchte es direkt zu benutzen wie 'com.dpackage.R'? – lellomanIch importiere das R von A nicht D. Das funktioniert beim Bauen mit Maven, nicht sicher, warum es nicht mit Gradle funktioniert. – barq
hum ok ... Ich weiß nicht, warum es nicht funktioniert, aber es macht Sinn für mich, warum würdest du erwarten, D's IDs in A's R zu finden? – lelloman