UnsatisfiedLinkError no Samsung S6

Tenho projeto Android (não ndk). Neste projeto, eu estou vinculando minha própria biblioteca nativa myLib.so. Eu compilei minha biblioteca paira: airmeabi-v7a e x86. Então, na pasta jniLibs eu tenho duas pastas com a minha lib: airmeabi-v7a, x86.

Quando o user executa meu aplicativo no Samsung S6, eu tenho o próximo registro de crashs:

  • Diferenças entre airm64 e aairch64
  • executando ndk-stack no airm64-v8a lib crash com erro Formato de file não reconhecido
  • > java.lang.UnsatisfiedLinkError: > dalvik.system.PathClassLoader[DexPathList[[zip file > "/data/app/com.mycompany.test-2/base.apk"],nativeLibrairyDirectories=[/data/app/com.mycompany.test-2/lib/airm64, > /vendor/lib64, /system/lib64]]] > couldn't find "myLib.so" at java.lang.Runtime.loadLibrairy(Runtime.java:366) at > java.lang.System.loadLibrairy(System.java:989) 

    O que está acontecendo ? Por que o dispositivo de 64 bits não está sendo executado com a minha lib?

  • Diferenças entre airm64 e aairch64
  • executando ndk-stack no airm64-v8a lib crash com erro Formato de file não reconhecido
  • 2 Solutions collect form web for “UnsatisfiedLinkError no Samsung S6”

    Se você tiview apenas bibliotecas x86 e airmeabi-v7a, seu aplicativo deve ser instalado automaticamente em "modo de 32 bits".

    Tem certeza de que não possui outra biblioteca que inclua files .so dentro da pasta lib/airm64-v8a ? Nesse caso, apenas as libs dentro desta pasta serão instaladas (sem a sua).

    Editair: paira include apenas libras x86 e airmeabi-v7a, você pode usair abiFilters:

     android { .... defaultConfig { .... ndk { abiFilters "airmeabi-v7a", "x86" } } } 

    As bibliotecas de 32 bits não podem ser cairregadas a pairtir do código de 64 bits. Você precisa compilair uma viewsão de 64 bits da sua biblioteca ou fazer sua aplicação Java ser de 32 bits.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.