0

我的 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"
}
4

1 回答 1

0

您确定您已针对正确的原生 API 级别构建了 NDK 库吗?如果您已针对android-21或更新版本构建它并在较旧的 android 版本上运行 - 特别是这些功能将失败。有关详细信息,请参阅https://stackoverflow.com/a/27338365/3115956https://stackoverflow.com/a/27093163/3115956 。

于 2015-12-30T08:06:15.413 回答