我有一个Android应用程序,minSdkVersion.apiLevel
将18targetSdkVersion.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,这对Android应用程序意味着什么?在运行4.3的设备上启动时会崩溃吗?
我无法想象该signal
符号会从4.3中丢失。这是NDK的错误吗?
当您在android-20或更早版本上安装共享库时,这正是将发生的情况:它将无法加载。您应该不会感到惊讶:signal
缺少它:Android运行时从未打算运行curl等命令行工具。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句