App 在 Android 5.0+ 設備啟動閃退,Logcat 報:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file ...
提示找不到原生庫,常見原因是 libs/armeabi 或 libs/armeabi-v7a 目錄缺失或 .so 文件未正確打包。
Android Studio 項目中,原生庫放置於:
app/src/main/jniLibs/
├── arm64-v8a/
├── armeabi-v7a/
│ └── libyourlib.so
├── x86/
└── x86_64/
src/main/ 下新建 jniLibs 文件夾(AS 會自動識別),或在 build.gradle 指定:sourceSets { main { jniLibs.srcDirs = ['libs'] } }(若習慣用 libs 目錄)。.so 按架構放入對應子目錄。至少提供 armeabi-v7a,建議補全 arm64-v8a。lib/ 目錄下是否包含對應架構的 .so。android { defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } }jniLibs 放預編譯 .so,jni 放 CMake/ndk-build 源碼。Android 5.0+ 要求 64 位支持,必須提供 armeabi-v7a 及 arm64-v8a 的 .so 文件,放置於 src/main/jniLibs/對應架構/ 目錄。棄用 armeabi,正確配置 NDK abiFilters,即可解決 UnsatisfiedLinkError。