NDK開發——Android Studio中開發NDK遇到的錯誤問題與解決方案匯總

錯誤一

在Genymotion中執行程序時,會出現找不到ndk編譯的庫的錯誤,可是libs目錄下明明存在對應的so庫

Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.handsome.ndkvoice-2/lib/arm/libfmodL.so" has unexpected e_machine: 40

解決方案:

由於Genymotion不支持arm架構,所以得用真機測試

錯誤二

在Genymotion中執行程序時,會出現找不到ndk編譯的庫的錯誤,可是libs目錄下明明存在對應的so庫

Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.handsome.ndkvoice-1/base.apk"],nativeLibraryDirectories=[/data/app/com.handsome.ndkvoice-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libfmodL.so"

解決方案:

由於你的so庫都放在libs目錄下,沒有放在AndroidStudio的jniLibs目錄下,所以找不到對應的so庫,這個時候應該在app的Gradle上添加下面代碼,讓jniLibs目錄指向libs目錄

sourceSets.main {
    jniLibs.srcDirs = ['libs']
    jni.srcDirs = []
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *