在Kindle Fire上加载NDK库时缺少c标准库符号

时间:2015-12-30 06:50:47

标签: android-ndk kindle-fire gradle-experimental

我的Android应用有一个NDK库。在使用Fire OS 4.5.5的Kindle Fire HD上运行时,应用程序无法加载NDK库,因为某些C标准库符号未解析,即它们似乎完全丢失:

  • data class Model(var test1: Int, var test2: Int): Parcelable { constructor(source: Parcel): this(source.readInt(), source.readInt()) override fun describeContents(): Int { return 0 } override fun writeToParcel(dest: Parcel?, flags: Int) { dest?.writeInt(this.test1) dest?.writeInt(this.test2) } companion object { @JvmField final val CREATOR: Parcelable.Creator<Model> = object : Parcelable.Creator<Model> { override fun createFromParcel(source: Parcel): Model{ return Model(source) } override fun newArray(size: Int): Array<Model?> { return arrayOfNulls(size) } } } }
  • rand()
  • srand()

使用Android 6的Nexus 5不会发生此问题。

有没有人知道为什么这些符号完全丢失,如果有某个缺失符号的官方列表?

是否还有其他“主要”Android问题,这些非传统的C标准库?

更新:我正在使用Android Studio 1.5.1和Gradle experimental plugin 0.4.0编译应用和NDK库。

signal()

更新:解决方法是在Gradle配置中设置此项,因为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 } } 不会影响NDK:

minSdkVersion.apiLevel

1 个答案:

答案 0 :(得分:0)

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

相关问题