Android Studio 導入Eclipse項目后,so文件如何加載,很多開發者碰到這個問題,如下,導入Eclipse項目后,提示無法找到串口需要的本地方法,也就是無法找到串口所需so文件
出現這個錯誤的原因是,Android Studio目錄結構與ADT目錄結構不一致,ADT中jnilib所在目錄Android Studio中沒有包含,編譯打包過程中并沒有打包到安裝包中,所以運行就出現如下錯誤
01-01 23:32:07.751 4455-4475/com.smartdevice.testdpc900 E/AndroidRuntime: FATAL EXCEPTION: Thread-135 java.lang.UnsatisfiedLinkError: Couldn't load serial_port from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.smartdevice.testdpc900-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.smartdevice.testdpc900-1, /vendor/lib, /system/lib]]]: findLibrary returned null at java.lang.Runtime.loadLibrary(Runtime.java:366) at java.lang.System.loadLibrary(System.java:514) at android.serialport.api.SerialPort.<clinit>(SerialPort.java:390) at com.smartdevicesdk.device.PC900$1.run(PC900.java:123) at java.lang.Thread.run(Thread.java:838)
我們打開build.gradle文件,看到默認配置如下
sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] }
main聲明中并沒有配置jnilib文件路徑
所以我們加入一條配置信息
sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] }
加入jniLibs.srcDirs=['libs']后,再次編譯運行即可解決上述報錯問題