1. 程式人生 > >3.26AndroidStudio中使用Spatialite for Android

3.26AndroidStudio中使用Spatialite for Android

問題說明:Spatialite for Android是基於Eclipse的Android專案構建的,所以並給基於gradle,不能直接載入到Android Studio中使用,需要做必要的設定才可以!

思路:

第一步:將Spatialite for Android載入到Eclipse中,測試成功,表明專案確實可用,api需要選擇支援google api的開發包!

第二步:在AndroidStudio中通過Improt project的方式將Spatialite for Android載入到AndroidStudio,這一過程會生成gradle構建檔案,生成AndroidStudio的application專案結構!

第三步:因為專案中存在專案依賴(spatialite-android依賴於spatialite-android-library),所以,需要將被依賴的專案型別改為library,可以參考AndroidStudio中一般library專案,重新設定build.gradle和Mainfest.xml

第四步:原專案依賴了google api中的maps.jar等幾個開發包,所以在類似Android_SDK_windows\add-ons\addon-google_apis_x86-google-19\libs的路徑下找到對應的jar包,放到spatialite-android的libs中,沒有libs時新建該資料夾,然後在build.gradle的dependences中新增compile fileTree(dir:'libs',include:['*.jar'])即可

第五步:spatialite-android-library中存在Exception is never thrown in try statement的問題,是說在try語句塊中永遠不會丟擲該異常,直接import java.lang.Exception將sqlite.Exception替換即可!

第六步:如果SDK的版本設定存在問題,可以直接參考已經測試成功的專案,依賴專案的最低版本不應高於應用專案的最小版本

連結:https://pan.baidu.com/s/16CNHF6FdnCNh06eyCXTJ_w 密碼:fma4

第七步:刪除spatialite-android-library中的jni資料夾,其中的c++原始碼檔案已經編譯為so檔案了,所以直接刪除,否則會編譯錯誤!

最後要注意的是so檔案引入AndroidStudio的問題,通過import project後,發現在main中自動生成了一個jniLibs資料夾存放了so檔案,這就是Android Studio引入so檔案的方式,會自動載入 jniLibs中的so檔案!

要想利用Spatialite for Android構建自己的專案,關鍵在於設定好apatialite-android-library這個依賴專案,然後在自己的application專案中依賴它就好了!

這樣一來,問題就簡單多了,需要在android專案中使用spatialite時,只需要在AndroidStudio中新建一個Android Library Module,刪除自動生成的原始碼包,然後將spatialite-android-library中的原始碼包jsqlite拷貝到main-->java中,將AndroidManifest.xml中的package改為jsqlite,然後再在main下新建資料夾jniLibs,將so檔案拷貝進去,然後再修改一下之前說過的Exception的問題,API版本的問題就OK了!

需要使用的時候,直接在專案dependencies中新增依賴:compile project(':your library')即可。