我的 Android 应用有一个 NDK 库。在装有 Fire OS 4.5.5 的 Kindle Fire HD 上运行它时,应用程序无法加载 NDK 库,因为某些 C 标准库符号未解析,即它们似乎完全丢失:
rand()
srand()
signal()
这个问题不会发生在我的 Nexus 5 与股票 Android 6。
有谁知道为什么这些符号完全丢失,以及是否在某处有此类丢失符号的官方列表?
是否有任何其他“主要”Android 分支具有此类非常规 C 标准库?
更新:我正在使用 Android Studio 1.5.1 和Gradle 实验插件 0.4.0编译应用程序和 NDK 库。
compileOptions.with {
sourceCompatibility=JavaVersion.VERSION_1_7
targetCompatibility=JavaVersion.VERSION_1_7
}
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.2"
defaultConfig.with {
applicationId = "net.pol_online.hyper"
minSdkVersion.apiLevel = 18 // Android 4.3 Jelly Bean
targetSdkVersion.apiLevel = 23 // Android 6.0 Marshmallow
}
}
更新:解决方案是在 Gradle 配置中设置它,因为事实证明这minSdkVersion.apiLevel
不会影响 NDK:
android.ndk {
platformVersion = "18"
}