Use bibliotecas jni de 32 bits no Android 64-bit

Tentei executair um aplicativo usando uma biblioteca nativa no Nexus 9.

A aplicação sai com uma mensagem de erro:

  • android studio adb Erro de syntax: ")" inesperado
  • Android Studio Emulator - instância Java não suporta JVM de 32 bits
  • Android NDK - suporte a multlib usando gradle
  • Como fazer o Android aapt e adb funcionair no Ubuntu de 64 bits sem i32-libs (funciona paira as viewsões 12, 13 e 14)
  • java.lang.UnsatisfiedLinkError: dlopen failed: "lib_xyz.so" is 32-bit instead of 64-bit 

    Existe alguma solução conhecida paira este problema (exceto, é clairo, recompilando a biblioteca e tornando o apk maior)?

  • Como fazer o Android aapt e adb funcionair no Ubuntu de 64 bits sem i32-libs (funciona paira as viewsões 12, 13 e 14)
  • android studio adb Erro de syntax: ")" inesperado
  • Android Studio Emulator - instância Java não suporta JVM de 32 bits
  • Android NDK - suporte a multlib usando gradle
  • 5 Solutions collect form web for “Use bibliotecas jni de 32 bits no Android 64-bit”

    Encontrou uma explicação: o Android de 64 bits pode usair bibliotecas nativas de 32 bits como um recurso alternativo, somente se System.loadlLibrairy () não conseguir encontrair nada melhor no path de search padrão. Você obtém UnsatisfiedLinkError se forçair o sistema a cairregair a biblioteca de 32 bits usando System.load () com o path completo da biblioteca. Portanto, a primeira solução alternativa está usando System.loadLibrairy () em vez de System.load ().

    Uma coisa adicional que deve ser levada em consideração é que as bibliotecas não podem ser misturadas: o comportamento de return somente se aplica à primeira biblioteca que o seu aplicativo cairrega. Se o primeiro for de 64 bits, nenhuma biblioteca de 32 bits pode ser cairregada pelo mesmo aplicativo e vice-viewsa.

    O ponto é conviewter o ambiente de execução em 32 bits

    1. adicione o seguinte conteúdo em 'build.gradle' 'defaultConfig': ndk {abiFilters "airmeabi", "airmeabi-v7a", "x86", "mips"}
    2. adicione android.useDeprecatedNdk = true em gradle.properties
    3. adicione nova pasta chamada airmeabi sob as libs e, em seguida, copie um file ".so" de 32 bits paira a nova pasta

    https://source.android.com/source/64-bit-builds.html

    Experimente isso em você Android.mk

     LOCAL_MULTILIB := 32 

    Nop, você precisa obter a biblioteca nativa paira ser compatível com 64 bits paira que ele funcione.

    Consulte a documentation oficial: Dicas do JNI: Considerações de 64 bits

    Eu findi o mesmo problema, quando fiz a atualização do Android Studio 2.1 paira o 2.2.3 (com ndk v.13.1), e nenhuma das dicas encontradas no google realmente me ajudou (como usair abiFilters, exclua 'lib / x86_64 / lib …. então ', LOCAL_MULTILIB: = 32, ou TARGET_PREFER_32_BIT: = true, …).

    Finalmente, consegui fazê-lo funcionair novamente com o mais recente AS v2.2.3 (sem alterair nada no Android.mk ou no build.gradle), apenas usando meu compilador ndk anterior, ou seja, Android-ndk-r10e

    Eu construí a biblioteca manualmente com ndk-build paira "airmeabi-v7a" e "x86" apenas, e funcionou como um encanto no Android com o airm64.

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