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')即可。


猜你喜欢

转载自blog.csdn.net/upcdxlq/article/details/79699044