降低项目api级别21到19时NDK UnsatisfiedLinkError

时间:2016-01-29 08:42:00

标签: android android-ndk serial-port gradle-experimental

我使用带有api级别21的ndk制作了项目。但是有些原因,我把项目api级别降低到了21级到19级。

我的项目在api 21中运行良好,但在降级后我的项目在NDK部分出错。

当我的项目运行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)

我第一次使用NDK,但我无法解决问题。 请帮我解决错误。

我正在使用gradle-experimental:0.4.0。

2 个答案:

答案 0 :(得分:3)

这让我发疯了。

我的compileSdkVersion 23

但我现在就解决了。

您可以在API 19和21 +之间看到termios.h文件的差异。

所以,我将termios.hD:\Android\Sdk\ndk-bundle\platforms\android-19\arch-arm\usr\include复制到jni文件夹,然后就可以了。

答案 1 :(得分:0)

我不知道为什么会这样。但删除我的项目中的所有.so文件并重建后,它没有任何错误。我认为。在api level-21中制作的文件在某种程度上造成了崩溃。

相关问题