gdal android 编译好,Android 交叉编译 Shape/KML/GeoJSON 文件读写库 Gdal 注意事项

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

-

写在前面目前编译出来的so包只能兼容 Android 5.0 及以上的系统网络上有编译好并且兼容Android 4.4的so包可以直接拿来用,这些so包都是armeabi-v7a的,目前绝大部分手机都是ARMv7架构,当前项目使用的设备也是ARMv7的,因此暂时没有问题由于pc端一般是x86或x86_64架构的处理器,因此虚拟机也是x86或x86_64架构,因此调试阶段先加入x86的so,正式版本中会移除

正文

为什么使用Gdal就目前所知Java平台的地理数据文件的处理工具主要有GeoTools,ArcGIS Runtime SDK 以及 GdalGeoTools的jar文件至少有70mb,虽然可以精简,但核心部分依赖了Java的awt库,awt库无法再Android上使用直接导致crashArcGIS Runtime SDK 的大小没有了解过,估计也小不到哪里去,ArcGIS 可以读取shp文件,但是不能直接修改和创建shp,而且ArcGIS 读取shp也是通过Gdal实现的Gdal 精简并且支持多种地理数据文件的操作,社区活跃度也很高,就在写这篇文章的上个月还发布了新的稳定版,但是和其他工具一样,Gdal并不针对 Android开发,因此为了能够在Android平台上使用,编译过程比较复杂

关于ShapeShape文件至少包含三个后缀不同的文件,.shp .dbf .shx类似 Gdal和GeoTools等工具可以只读取其中一个文件,如shp和dbf,但是导入文件的时候注意全部导入,否则某些数据将会缺失Gdal 支持 shp 和 KML,GeoJson 直接互换,KML实际上是一种专门的XML规范,GeoJson则是Json的规范,如果自行解析,可以直接将其视为XML和Json

关于编译请在Linux上按照这篇文章的流程进行编译,作者写得十分详细x86 交叉编译的配置参考如下,其他abi请自行推断CC 和CXX参数export NDK_HOME=/home/parallels/albert/Android/android-ndk-r14b

export PATH=$NDK_HOME:$PATH

export TOOLCHAIN_HOME=/home/parallels/Android/android-toolchain/x86

export PATH=$TOOLCHAIN_HOME/bin:$PATH

export LIBS="-lstdc++ -lgnustl_shared"

export CC=/home/parallels/Android/android-toolchain/x86/bin/i686-linux-android-gcc-4.9

export CXX=/home/parallels/Android/android-toolchain/x86/bin/i686-linux-android-g++

export CXXFLAGS="-march=i686"

export CFLAGS="-march=i686"

export LDFLAGS="-march=i686"./configure 阶段如果报错,务必在configure.log中查看详细的错误信息在 gdal 2.0.3版本以下会出现 x86_64-unknown-linux-gnu 错误,无法检测到编译平台,这里需要更新 gdal源文件的config.guess和config.sub文件,可以在这里获取使用APP_PLATFORM = 19 编译无法通过,这是由于signal和atof等库或函数在21以下不存在,将APP_PLATFORM下调至8可以通过,但是运行时可能出现链接错误,暂时没有找到解决办法其中由于库或函数不存在而出错的源文件如下,可以考虑直接修改源文件,如atof可以修改strtod(nptr, NULL)gxf_ogcwkt.c

hf2dataset.cpp

tif_luv.c

cpl_strtod.cpp

gdalwarper.cpp

gdalnodatamaskband.cpp

ilwisdataset.cpp

cpl_spawn.cpp使用低版本源码有时在swig目录中make出错,本人是直接忽略的,gdal社区中有人给出的建议是调低swig版本,实际使用发现一般swig正常生成jar包可以通用,可能是由于绝大部分接口的定义都是一致的正式发版时记得将x86的so文件移除

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值