Sto cercando di aggiungere una libreria condivisa precompilata nativa al mio progetto in Android Studio. Sto usando il gradle-experimental: 0.6.0-alpha5. Tuttavia, ogni volta che provo ad aggiungere la libreria condivisa prebuilt al mio modello di applicazione, ottengo il seguente errore:Libreria condivisa precompilata nativa in Android Studio con plug-in sperimentale Gradle
Error:Cause: org.gradle.api.internal.PolymorphicDomainObjectContainerConfigureDelegate
La biblioteca si aggiunge nel modello di applicazione come viene descritto dal Google Gradle Experimental Guide:
repositories {
prebuilt(PrebuiltLibraries) {
binaries.withType(SharedLibraryBinary) {
sharedLibraryFile = file("/path_to_libs/${targetPlatform.getName()}/shared_lib.so")
}
}
}
android.sources {
main {
jniLibs {
dependencies {
library "shared_lib"
}
}
}
}
La linea cruciale è la libreria "shared_lib". Non c'è nessun errore se annullo questa riga.
Poiché non funziona, ho anche provato a utilizzare la guida da ph0b.com. Stanno usando una sintassi diversa per l'aggiunta di librerie condivise native (ho appena lasciato fuori le intestazioni dal momento che non ho una singola directory comprese tutte le intestazioni):
repositories {
libs(PrebuiltLibraries) {
shared_lib {
binaries.withType(SharedLibraryBinary) {
sharedLibraryFile = file("/path_to_libs/${targetPlatform.getName()}/shared_lib.so")
}
}
}
}
android.sources {
main {
jni {
dependencies {
library "shared_lib" linkage "shared"
}
}
}
}
Tuttavia, questo non funziona pure. Android Studio non copia my shared_lib nel file apk. Quindi, ottengo sempre il seguente errore:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader [...] couldn't find "shared_lib.so"
Qualcuno può dirmi come posso includere la libreria di prefabbricazione nativa nel mio progetto? Sto usando buildToolsVersion = '22 .0.1 ' e compileSdkVersion = 22 come parametri di costruzione.
potresti provare con il percorso codificato su .so invece di '$ {targetPlatform.getName()}'? – RaGe
Sì, ci ho provato già. Gradle può sicuramente risolvere il percorso poiché ho un errore se cambio il percorso di un file inesistente. Sarei comunque felice se c'è una soluzione al mio problema. Tuttavia, ho temporaneamente risolto il mio problema non usando più le librerie pre-compilate. Ho aggiunto tutti i miei file header necessari con 'cppFlags.add (" - I $ {file ("./../../../ projects/test/include")} ". ToString())' e il cpp file con 'srcDirs + =" ./../../../ projects/test/src/"' a jni. Ma sarebbe comunque meglio poter usare le librerie predefinite. – budderick
potresti eseguire con '--stacktrace' e ottenere più errori? – RaGe