在 Kindle Fire 上加载 NDK 库时缺少 c 标准库符号
Missing c standard library symbols when loading NDK library on Kindle Fire
我的 Android 应用有一个 NDK 库。当 运行 在带有 Fire OS 4.5.5 的 Kindle Fire HD 上时,应用程序无法加载 NDK 库,因为某些 C 标准库符号未解析,即它们似乎完全缺失:
rand()
srand()
signal()
我的 Nexus 5 库存没有发生这个问题 Android 6.
有谁知道为什么这些符号完全缺失,是否有官方列表某处包含此类缺失符号?
是否还有其他 "major" Android 具有此类非常规 C 标准库的分支?
更新: 我正在使用 Android Studio 1.5.1 和 Gradle experimental plugin 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"
}
您确定您已针对正确的原生 API 级别构建了 NDK 库吗?如果您构建它的目标是 android-21
或更高版本,并且 运行 是针对旧的 android 版本——尤其是这些功能将失败。有关详细信息,请参阅 and 。
我的 Android 应用有一个 NDK 库。当 运行 在带有 Fire OS 4.5.5 的 Kindle Fire HD 上时,应用程序无法加载 NDK 库,因为某些 C 标准库符号未解析,即它们似乎完全缺失:
rand()
srand()
signal()
我的 Nexus 5 库存没有发生这个问题 Android 6.
有谁知道为什么这些符号完全缺失,是否有官方列表某处包含此类缺失符号?
是否还有其他 "major" Android 具有此类非常规 C 标准库的分支?
更新: 我正在使用 Android Studio 1.5.1 和 Gradle experimental plugin 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"
}
您确定您已针对正确的原生 API 级别构建了 NDK 库吗?如果您构建它的目标是 android-21
或更高版本,并且 运行 是针对旧的 android 版本——尤其是这些功能将失败。有关详细信息,请参阅 and 。