与API级别相比,Android NDK平台版本的确切含义是什么?

Pol*_*Pol 6 android openssl android-ndk

我有一个Android应用程序,minSdkVersion.apiLevel将18 targetSdkVersion.apiLevel设置为23。因此,我将NDK设置为platformVersion为18。

不幸的是,在将OpenSSL添加到组合中之后,JNI库现在无法链接:

/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'signal'
/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'tcsetattr'
/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'tcsetattr'
/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function open_console: error: undefined reference to 'tcgetattr'
Run Code Online (Sandbox Code Playgroud)

如果设置,问题就消失了 platformVersion为21(在19上也不起作用)。

如果Android应用程序的API级别为18,但JNI库链接为21,这对Android应用程序意味着什么?在运行4.3的设备上启动时会崩溃吗?

我无法想象该signal符号会从4.3中丢失。这是NDK的错误吗?

Ale*_*ohn 5

当您在android-20或更早版本上安装共享库时,这正是发生的情况:它将无法加载。您应该不会感到惊讶:signal缺少它:Android运行时从未打算运行curl等命令行工具。