2

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を使用しています。

4

2 に答える 2

3

これは私を夢中にさせました。

私のcompileSdkVersion 23

しかし、私は今それを解決します。

termios.hAPI 19 と 21+ の間のファイルの差分を確認できます。

termios.hそのため、 from D:\Android\Sdk\ndk-bundle\platforms\android-19\arch-arm\usr\includetojniフォルダーをコピーすると、機能します。

于 2016-06-30T01:34:17.480 に答える
0

なぜ機能するのかわかりません。しかし、プロジェクト内のすべての .so ファイルを削除して再構築した後、エラーなしで動作します。API レベル 21 で作成された .so ファイルが何らかの原因でクラッシュしたと思います。

于 2016-02-01T06:49:46.203 に答える