a year ago
- Android平台定义了不同的API级别,某些符号仅在特定API版本后才可用。
- 在旧版API上使用ASystemFontIterator_open等符号需要通过dlopen和dlsym动态查找,或直接拒绝在旧API上运行。
- Android提供__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__宏用于弱符号定义,需结合编译器与运行时检查。
- Clang的-Werror=unguarded-availability选项强制静态检查API级别不匹配问题,防止调用不安全的弱符号。
- Firefox构建系统默认使用隐藏可见性,导致共享库中弱符号未定义而引发崩溃。
- 解决方案是在包含Android系统头文件时临时将可见性改为默认,确保符号能被正确解析。