为什么 android ndk 独立工具链不支持 api 19 的 arm64 但 android ndk cmake 支持
why android ndk standalone toolchain do not support arm64 with api 19 but android ndk cmake does
我曾经构建 api 级别 19 的 arm64-v8a lib 使用 android.toolchain.cmake
附带 Android NDK r16b 像这样。
${CMAKE} \
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
-DANDROID_NDK=$ANDROID_NDK_HOME \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_NATIVE_API_LEVEL="android-19" \
-DANDROID_STL="c++_shared" \
-DANDROID_CPP_FEATURES="rtti exceptions" \
..
现在我想打包我的库使用 conan
交叉编译 android 库使用独立的工具链。用 --arch arm64
和 --api 19
制作独立的工具链似乎是不可能的,因为下面的命令
./make_standalone_toolchain.py --arch=arm64 --api=19 --stl=libc++ --install-dir=./test
将失败并显示错误消息:
19 is less than minimum platform for arm64 (21)
有什么办法可以解决这个问题吗?
因为没有 API 19 ARM64 这样的东西。在 android-21.
中添加了 64 位支持
CMake 支持这一点,因为我们的工具链文件是根据当时常用的流行选项建模的,它就是这样做的。 ndk-build 之所以这样做,是因为您在一次调用中构建了多个 ABI。在这两种情况下,对于 64 位目标,构建会自动将 API 级别提高到 21。
独立工具链仅适用于一种架构,因此如果您指定了该架构不支持的 API 级别,它们会给出错误,因为这很可能是一个错误。
我曾经构建 api 级别 19 的 arm64-v8a lib 使用 android.toolchain.cmake
附带 Android NDK r16b 像这样。
${CMAKE} \
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
-DANDROID_NDK=$ANDROID_NDK_HOME \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_NATIVE_API_LEVEL="android-19" \
-DANDROID_STL="c++_shared" \
-DANDROID_CPP_FEATURES="rtti exceptions" \
..
现在我想打包我的库使用 conan
交叉编译 android 库使用独立的工具链。用 --arch arm64
和 --api 19
制作独立的工具链似乎是不可能的,因为下面的命令
./make_standalone_toolchain.py --arch=arm64 --api=19 --stl=libc++ --install-dir=./test
将失败并显示错误消息:
19 is less than minimum platform for arm64 (21)
有什么办法可以解决这个问题吗?
因为没有 API 19 ARM64 这样的东西。在 android-21.
中添加了 64 位支持CMake 支持这一点,因为我们的工具链文件是根据当时常用的流行选项建模的,它就是这样做的。 ndk-build 之所以这样做,是因为您在一次调用中构建了多个 ABI。在这两种情况下,对于 64 位目标,构建会自动将 API 级别提高到 21。
独立工具链仅适用于一种架构,因此如果您指定了该架构不支持的 API 级别,它们会给出错误,因为这很可能是一个错误。