首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android JNI 兼容性問題:4.4 正常 4.0 報 UnsatisfiedLinkError

     編輯:程式設計綜合問答

問題描述

專案原基於 Android 4.4.2 (JDK 1.7) 編譯,後需降級至最低 Android 2.3.3 (JDK 1.6)。修改後在 4.4.2 手機運行正常,但在 4.0.4 設備上 JNI 模組拋出 UnsatisfiedLinkError,找不到 Native 方法。代碼邏輯與編譯均無誤,問題出在哪裡?Android 4.4.x 與 4.1.x 在 JNI 層有何變更?

根本原因

經排查,Application.mk 中多加了 APP_STL := stlport_shared,但該 STL 實際為空,導致主 .so 載入失敗,進而引發 JNI 方法找不到。

解決方案

  1. 移除或修正 Application.mk 中的 APP_STL 設定,改用預設或存在的 STL(如 gnustl_shared、c++_shared)。
  2. 重新編譯 Native 庫,確認所有相依 .so 均正確打包進 APK。
  3. 在低版本設備上測試,驗證 JNI 方法正常解析。

經驗總結

  • 仔細閱讀每一行編譯/運行日誌,關鍵錯誤往往隱藏在看似無關的輸出中。
  • 對 JNI、NDK 構建流程不熟悉會大幅增加排查時間,建議系統學習相關機制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved