2015-12-30 77 views
0

我的Android應用程序有一個NDK庫。當消防OS 4.5.5運行它在的Kindle Fire HD,應用程序失敗,因爲一些C標準庫符號即它們似乎是完全缺失的是沒有解決加載NDK庫:在Kindle Fire上加載NDK庫時缺少c標準庫符號

  • rand()
  • srand()
  • signal()

此問題不會對我的Nexus 5與普通的Android發生6

有誰ķ現在爲什麼這些符號完全缺失,並且如果有這樣一個缺失符號的官方列表?

是否有任何其他「主要」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 
    } 
} 

UPDATE:的解決方案是因爲它原來是minSdkVersion.apiLevel不影響NDK設置這個在搖籃配置:

android.ndk { 
    platformVersion = "18" 
} 

回答

0

你確定你已經建立你的NDK庫的目標是正確的本地API級別?如果您已經將其構建爲針對android-21或更新版本並在較早的Android版本上運行 - 特別是這些功能將失敗。有關更多詳細信息,請參見https://stackoverflow.com/a/27338365/3115956https://stackoverflow.com/a/27093163/3115956

+0

我將Gradle配置添加到我的問題中:我針對'android-18'。 – Pol

+0

所以我想知道如果問題是,即使我在Gradle配置中將目標API設置爲18,這種方式不會傳遞給NDK構建? – Pol

+0

我在這裏問了一個單獨的問題:http://stackoverflow.com/questions/34532233/how-do-you-view-the-raw-gradle-build-log-for-the-ndk-in-android-studio。 – Pol