2

我使用 ndk 和 api 级别 21 制作了项目。但由于某些原因,我将项目 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。

4

2 回答 2

3

这让我抓狂。

我的compileSdkVersion 23

但是我现在才解决。

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

所以,我将termios.hfrom复制D:\Android\Sdk\ndk-bundle\platforms\android-19\arch-arm\usr\includejni文件夹,然后它就可以工作了。

于 2016-06-30T01:34:17.480 回答
0

我不知道为什么它有效。但是在我的项目中删除所有 .so 文件并重建后,它可以正常工作,没有任何错误。我认为在 api level-21 中制作的 .so 文件以某种方式崩溃了。

于 2016-02-01T06:49:46.203 回答