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

标签 android android-ndk openssl

我有一个 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/

相关文章:

openssl - 如何知道 .pem 文件包含公钥还是私钥?

openssl - X.509 证书中 ECDSA 签名的 ASN.1 结构

具有 START_STICKY 的 Android 服务在终止应用程序时崩溃

java - Android Studio 无法连接到 Azure sql server 中的数据库

android - 将 USB 文件描述符传递给 Android NDK 程序

android - 在 native Android 库中保存/加载数据

android - 将 yahoo messenger 与 android 应用程序集成

android - 安装 NativeScript 的问题

android - 该文件是项目的一部分。请将其包含在适当的文件构建(build.gradle、CMakeLists、txt 或 Android.mk 中并同步项目

openssl - 如何使用 osslsigncode 执行代码签名