首页 > 解决方案 > NDK 编译应用的 Android 兼容性

问题描述

这个问题可能听起来超级愚蠢,但我没有找到任何官方答案,这个错误https://github.com/android-ndk/ndk/issues/272让我更加困惑。

如果我用 ndk 编译一个带有 27 版平台的 C 程序,它可以在旧版本的 android 上工作吗?

标签: androidandroid-ndkcross-compiling

解决方案


不。NDK API 级别相当于 minSdkVersion:https ://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#target-api-set-higher-than-device-api

C 库的静态版本可以在可执行文件中使用,但如果在应用程序中使用它会导致问题,因为 libc 已经由 zygote 加载,并且您将拥有全局数据结构的冲突副本。

请注意,即使使用普通的可执行文件,静态链接 libc 也会导致网络问题,因为 libc 将其某些方面委托给 netd,并且只有当 libc 的版本与 netd 的版本匹配时,该通信协议才能保证工作。


推荐阅读