Genymotion con traducción ARM
Puede utilizar genymotion (la versión de uso personal es gratuita) con una ROM Oreo + ARM_Translation_Oreo.zip (busca en Google el nombre del archivo para descargarlo). Una vez que descargues el zip simplemente arrastra y suéltalo en la ventana del emulador, acepta el aviso y luego reinicia el emulador. No es una solución ligera, ya que genymotion utiliza virtualbox como backend, pero funciona mucho más rápido que las imágenes arm de google disponibles con Android studio.
Emulador estándar de Android con una imagen ARM
Otra opción (no responde directamente a tu pregunta) es utilizar realmente una imagen ARM en lugar de X86. En Android Studio > Herramientas > Gestor de AVD > Crear dispositivo virtual cuando se le pida Seleccione una imagen del sistema seleccione el Otras imágenes y elija una imagen basada en el brazo - esas imágenes se ejecutarán MUY lentamente en comparación con X86. Recibirás una advertencia de que no es recomendable, pero podrías obtener un rendimiento aceptable si seleccionas la versión más antigua de la API posible (dependiendo de tus necesidades) con una resolución de pantalla baja.
1 votos
Si la parte nativa es una biblioteca común de código abierto, añadir la biblioteca común para x86 al APK y luego renunciar a ella podría ser una opción.
0 votos
@Robert ¿cómo puedo saber qué biblioteca le falta?
1 votos
Sólo tienes que abrir el archivo APK con un visor ZIP. Compruebe el
lib
carpeta. Cadalib
-subcarpeta es para una plataforma y en cada subcarpeta tienen que estar presentes las mismas bibliotecas (compiladas para la plataforma específica). Supongo que lax86
falta la subcarpeta, lo que hace que elNO_MATCHING_ABIS
mensaje.0 votos
@Robert Eso funcionó. Y sí el
x86
la subcarpeta no está ahí. La única subcarpeta es laarmeabi-v7a
carpeta. En ella, veo un montón de archivos .so comolibavcodec-57.so
,libswscale-4.so
y otros. ¿Puedo simplemente copiarlos en una nueva carpeta que diga x86, o tengo que volver a compilarlos?1 votos
Necesitas esos archivos compilados para x86 y por supuesto en la versión correcta - parece que tienes suerte ya que ambas son librerías de código abierto. Yo usaría un editor hexadecimal en los archivos lib existentes y comprobaría si hay una cadena incluida con la versión exacta de la biblioteca.