我有一个 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'
如果将 platformVersion
设置为 21(它在 19 时也不起作用),问题就会消失。
如果 Android 应用程序的 API 级别为 18 但 JNI 库链接为 21,这对它意味着什么?它会在运行 4.3 的设备上启动时崩溃吗?
不过,我无法想象 4.3 中缺少 signal
符号。这是 NDK 错误吗?
最佳答案
这正是您在 android-20 或更早版本上安装共享库时会发生的情况:它将无法加载。您不必为缺少 signal
感到惊讶:Android 运行时从未打算运行 curl 等命令行工具。
关于android - 与 API 级别相比,Android NDK 平台版本的确切意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37122126/