Android mupdf java.lang.UnsatisfiedLinkError: dlopen failed: no se puede ubicar el símbolo "atof"
fatal-error (1)
Google ha movido algunas de las funciones estándar de la biblioteca C, como atof (), de ser funciones en línea en los archivos de encabezado a las funciones normales. Los últimos NDK predeterminarán la creación de un .so que solo sea compatible con los últimos dispositivos Android que tengan la función atof () en la biblioteca C estándar del dispositivo (libc.so). Esto significa que si ejecuta una biblioteca en un dispositivo anterior que tiene una versión anterior de la biblioteca C, se producirá un error al cargar el dll ya que la función atof () esperada no existirá.
Has intentado configurar esto en tu Application.mk:
APP_PLATFORM := android-9
Esto hará que el compilador ndk construya código compatible con versiones anteriores de Android.
También puede probar la degradación de su instalación NDK a la versión 10b (esta versión es anterior al cambio en el que se cambió el atof de en línea a parte de libc, por lo que se evita por completo el problema).
Estoy usando mupdf para abrir un archivo pdf en mi aplicación de Android. La aplicación falla con este error.
java.lang.UnsatisfiedLinkError: dlopen failed: no se puede ubicar el símbolo "atof" al que hace referencia "libmupdf_java.so" ...
Este es mi código de Java para ver el archivo pdf.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.main_layout);
MuPDFCore core = null;
try {
core = new MuPDFCore(this,"/storage/emulated/0/Download/Metamorphosis-jackson.pdf");
} catch (Exception e) {
e.printStackTrace();
}
MuPDFReaderView reader = new MuPDFReaderView(this);
reader.setAdapter(new MuPDFPageAdapter(this, new FilePicker.FilePickerSupport() {
@Override
public void performPickFor(FilePicker filePicker) {
}
}, core ));
layout.addView(reader);
}
}
El código falla en esta línea particular.
core = new MuPDFCore(this,"/storage/emulated/0/Download/Metamorphosis-jackson.pdf");
Este es el registro de errores: -
07-13 10: 40: 34.299 7115-7115 / com.androidnewbee.www.shatayushiapp E / AndroidRuntime: EXCEPCIÓN FATAL: proceso principal: com.androidnewbee.www.shatayushiapp, PID: 7115 java.lang.UnsatisfiedLinkError: dlopen failed: no se puede localizar el símbolo "atof" al que hace referencia "libmupdf_java.so" ... en java.lang.Runtime.loadLibrary (Runtime.java:364) en java.lang.System.loadLibrary (System.java:526) en com.artifex. mupdfdemo.MuPDFCore. (MuPDFCore.java:15) en com.androidnewbee.www.shatayushiapp.MainActivity.onCreate (MainActivity.java:23) en android.app.Activity.performCreate (Activity.java:5301) en android.app. Instrumentation.callActivityOnCreate (Instrumentation.java:1094) en android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2291) en android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2378) en android.app.ActivityThread.access $ 800 ( ActivityThread.java:155) en android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1244) en android.os.Handler.dispatchMessage (Handler.java:102) en un ndroid.os.Looper.loop (Looper.java:136) en android.app.ActivityThread.main (ActivityThread.java:5433) en java.lang.reflect.Method.invokeNative (Native Method) en java.lang.reflect. Method.invoke (Method.java:515) en com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1268) en com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1084) en dalvik.system.NativeStart.main (método nativo)
También me gustaría saber cómo puedo mostrar todos los archivos PDF en una lista y permitir que el usuario seleccione de los archivos para verlos usando mupdf. Soy nuevo en la programación, por lo que cualquier ayuda o sugerencia es bienvenida.