INSTALL_FAILED_MISSING_SHARED_LIBRARY Provoque la non-installation de l'application

Oct 15 2020

Je recevais l'erreur

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

le lien me mène à une page avec des notes de version pour Android 4.2, donc il n'y a rien de prétendant à mon problème,

J'utilise une bibliothèque Documentscanner buitl avec opencv et qui utilise jnilibs et le problème que j'ai est avec cela jnilibs

alors

J'ai parcouru le guide des développeurs Android et suis tombé sur ceci

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.

Alors maintenant, après avoir suivi l'IE ci-dessus Déplacement de la bibliothèque / suppression de mon gradle.build etc. L'application se construit et commence à s'installer, mais j'obtiens l'erreur

Installation did not succeed.
The application could not be installed: INSTALL_FAILED_MISSING_SHARED_LIBRARY

Une aide serait appréciée

Réponses

mayank1513 Oct 28 2020 at 10:47

Veuillez suivre cette réponse .

Selon https://developer.android.com/studio/projects/gradle-external-native-builds#jniLibs

Si vous utilisez Android Gradle Plugin 4.0, déplacez toutes les bibliothèques utilisées par les cibles IMPORTÉES CMake hors de votre répertoire jniLibs pour éviter cette erreur.

Il vous suffit donc de déplacer le dossier $ {ANDROID_ABI} /libdlib.so vers un autre emplacement, par exemple en créant un nouveau nom de répertoire cmakeLibs

par exemple:

set_target_properties( dlib
    PROPERTIES IMPORTED_LOCATION
    ${CMAKE_SOURCE_DIR}/../cmakeLibs/${ANDROID_ABI}/libdlib.so )

Référer - https://developer.android.com/studio/projects/gradle-external-native-builds#jniLibs

RubenMeiring Dec 11 2020 at 13:43

J'ai résolu cela en important manuellement le dernier module opencv, le problème était que l'opencv inclus dans la bibliothèque que j'utilisais était obsolète.

si vous obtenez la même erreur (ou je vous recommanderais de le faire si vous rencontrez des problèmes avec opencv)

Voici comment j'ai corrigé

Suppression de toutes les bibliothèques et modules relatifs à l'erreur (Opencv, etc.)

Ensuite, téléchargez le module android openCV et importez-le

puis importez la bibliothèque qui utilise openCV (dans mon cas, c'était AndroidScannerDemo par jhansireddy sur github)

puis enfin Ajustez votre code pour utiliser la bibliothèque que vous utilisez