簡體   English   中英

Android 5.0 Lollipop上的UnsatisfiedLinkError

[英]UnsatisfiedLinkError on Android 5.0 Lollipop

我通過以下方式加載本機庫:

try {
       System.loadLibrary("myNative");
} catch (UnsatisfiedLinkError e) {
       //java.lang.UnsatisfiedLinkError here
       System.load("/data/data/com.my.app/my_native/libmyNative.so");
}

上面的代碼在Android 5.0 Lollipop以外的其他設備上都可以正常工作。 Android 5.0 Lollipop設備上運行時,我不斷收到以下錯誤:

java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.my.app/my_native/libmyNative.so" is 32-bit instead of 64-bit
at java.lang.Runtime.load(Runtime.java:331)
at java.lang.System.load(System.java:982)

如何解決這個問題呢?

===更新====

我將本機庫從lib/<archType>/libmyNative.so/data/data/com.my.app/my_native/libmyNative.so ,然后使用上面的代碼加載該庫。

看來,打包您的庫的某些方式(將它們從lib/<archType>/libmyNative.so/data/data/com.my.app/my_native/libmyNative.so )會使安裝程序感到困惑。 安裝APK時,它應該已經自動提取了正確的arch類型的庫並將它們提供給System.loadLibrary您無需手動將任何內容復制到自定義目錄(如my_native

在這種情況下, <archType>是現有的之一( armeabiarmeabi-v7a等)還是您自己的東西? 如果不是標准程序之一,則安裝程序將不知道您的應用程序包含32位本機代碼,因此將以首選模式(64位)啟動應用程序的進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM