Hice el proyecto usando ndk con el nivel de API 21. Pero por algunas razones, bajé el nivel de API del proyecto 21 a 19.

Mi proyecto funcionó bien en api 21, pero después de degradar mi proyecto da un error en la parte NDK.

Este es mi código de error cuando mi proyecto ejecuta System.loadLibrary ("serial_port") ;.

AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "tcgetattr" referenced by "libserial_port.so"...
AndroidRuntime:     at java.lang.Runtime.loadLibrary(Runtime.java:364)
AndroidRuntime:     at java.lang.System.loadLibrary(System.java:526)
AndroidRuntime:     at com.josh.mainSelection.UartUI.onCreate(UartUI.java:220)
AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5231)
AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:135)
AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
AndroidRuntime:     at android.os.Looper.loop(Looper.java:136)
AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5001)
AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)
AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:811)
AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:627)
AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)

Primero estoy usando NDK y no puedo resolver el problema. por favor ayúdame a resolver el error.

Estoy usando gradle-experimental: 0.4.0.

2
inin 29 ene. 2016 a las 11:41

2 respuestas

La mejor respuesta

No sé por qué funciona. Pero después de eliminar todos los archivos .so en mi proyecto y reconstruirlo, funciona sin errores. Creo que los archivos .so hechos en api level-21 se bloquearon de alguna manera.

0
shj 1 feb. 2016 a las 06:49

Esto me volvió loco.

Mi compileSdkVersion 23

Pero lo resuelvo ahora mismo.

Puede ver la diferencia del archivo termios.h entre API 19 y 21+.

Entonces, copio el termios.h de D:\Android\Sdk\ndk-bundle\platforms\android-19\arch-arm\usr\include a la carpeta jni, y luego funciona.

3
jp1017 30 jun. 2016 a las 01:34