INSTALL_FAILED_MISSING_SHARED_LIBRARY Bewirkt, dass die App nicht installiert wird

Oct 15 2020

Ich habe den Fehler bekommen

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

Der Link führt mich zu einer Seite mit Versionshinweisen für Android 4.2. Es gibt also nichts, was mein Problem vortäuschen könnte.

Ich verwende eine Documentscanner-Bibliothek, die mit opencv erstellt wurde und die jnilibs verwendet. Das Problem, das ich habe, ist das mit jnilibs

damit

Ich habe den Android Dev Guide durchgesehen und bin darauf gestoßen

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.

Nachdem ich dem obigen IE gefolgt bin, verschiebe ich die Bibliothek / entferne sie aus meinem gradle.build usw. Die App wird erstellt und beginnt mit der Installation, aber dann wird der Fehler angezeigt

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

Hilfe wäre dankbar

Antworten

mayank1513 Oct 28 2020 at 10:47

Bitte folgen Sie dieser Antwort .

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

Wenn Sie Android Gradle Plugin 4.0 verwenden, verschieben Sie alle Bibliotheken, die von IMPORTED CMake-Zielen verwendet werden, aus Ihrem jniLibs-Verzeichnis, um diesen Fehler zu vermeiden.

Sie müssen also nur den Ordner $ {ANDROID_ABI} /libdlib.so an einen anderen Ort verschieben, z. B. um einen neuen Verzeichnisnamen cmakeLibs zu erstellen

z.B:

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

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

RubenMeiring Dec 11 2020 at 13:43

Ich habe dieses Problem gelöst, indem ich das neueste opencv-Modul manuell importiert habe. Das Problem war, dass das in der von mir verwendeten Bibliothek enthaltene opencv veraltet war.

wenn Sie den gleichen Fehler erhalten (oder ich würde empfehlen, dies zu tun, wenn Sie Probleme mit opencv haben)

So habe ich es behoben

Alle Bibliotheken und Module, die den Fehler betreffen (Opencv usw.), wurden entfernt.

Laden Sie dann das openCV-Android-Modul herunter und importieren Sie es

Importieren Sie dann die Bibliothek, die openCV verwendet (in meinem Fall war es AndroidScannerDemo von jhansireddy auf github).

und passen Sie zuletzt Ihren Code an, um die von Ihnen verwendete Bibliothek zu verwenden