INSTALL_FAILED_MISSING_SHARED_LIBRARY Causa la mancata installazione dell'app
Ho ricevuto l'errore
More than one file was found with OS independent path 'lib/x86_64/libopencv_java3.so'. If you are using jniLibs and CMake IMPORTED targets, see https://developer.android.com/studio/preview/features#automatic_packaging_of_prebuilt_dependencies_used_by_cmake
il collegamento mi porta a una pagina con una nota di rilascio per Android 4.2, quindi non c'è nulla che preveda il mio problema,
Sto usando una libreria Documentscanner buitl con opencv e che usa jnilibs e il problema che ho è con quel jnilibs
così
Ho esaminato la Guida per sviluppatori Android e mi sono imbattuto in questo
Automatic packaging of prebuilt dependencies used by CMake
Prior versions of the Android Gradle Plugin required that you explicitly package any prebuilt libraries used by your CMake external native build by using jniLibs. You may have libraries in the src/main/jniLibs directory of your module, or possibly in some other directory configured in your build.gradle file:
sourceSets {
main {
// The libs directory contains prebuilt libraries that are used by the
// app's library defined in CMakeLists.txt via an IMPORTED target.
jniLibs.srcDirs = ['libs']
}
}
With Android Gradle Plugin 4.0, the above configuration is no longer necessary and will result in a build failure:
* What went wrong:
Execution failed for task ':app:mergeDebugNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> More than one file was found with OS independent path 'lib/x86/libprebuilt.so'
External native build now automatically packages those libraries, so explicitly packaging the library with jniLibs results in a duplicate. To avoid the build error, move the prebuilt library to a location outside jniLibs or remove the jniLibs configuration from your build.gradle file.
Quindi ora, dopo aver seguito IE sopra, Spostare la libreria / rimuovere dal mio gradle.build ecc. L'app viene compilata e avvia l'installazione, ma poi ottengo l'errore
Installation did not succeed.
The application could not be installed: INSTALL_FAILED_MISSING_SHARED_LIBRARY
L'aiuto sarebbe apprezzato
Risposte
Per favore segui questa risposta .
Secondo https://developer.android.com/studio/projects/gradle-external-native-builds#jniLibs
Se stai utilizzando Android Gradle Plugin 4.0, sposta tutte le librerie utilizzate da IMPORTED CMake target fuori dalla directory jniLibs per evitare questo errore.
Quindi devi solo spostare la cartella $ {ANDROID_ABI} /libdlib.so in un altro posto, ad esempio creando un nuovo nome di directory cmakeLibs
per esempio:
set_target_properties( dlib PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/../cmakeLibs/${ANDROID_ABI}/libdlib.so )
Fare riferimento - https://developer.android.com/studio/projects/gradle-external-native-builds#jniLibs
Ho risolto questo problema importando manualmente l'ultimo modulo opencv, il problema era che l'opencv incluso nella libreria che stavo usando era obsoleto.
se ottieni lo stesso errore (o ti consiglio di farlo se hai problemi con opencv)
Ecco come ho risolto
Rimosse tutte le librerie e i moduli relativi all'errore (Opencv ecc.)
Quindi scarica il modulo Android openCV e importalo
quindi importa la libreria che utilizza openCV (nel mio caso era AndroidScannerDemo di jhansireddy su github)
e infine regola il tuo codice per utilizzare la libreria che stai utilizzando