QGIS for Android 开发:3、QGIS for android编译

    配置编译环境linux

us@ubuntu:/opt/code/OSGeo4A$ sudo apt-get install -y cython zlib1g-dev

    老版本使用QGIS-Android编译,然而针对现有的更新平台都不及时,若是选择老平台开发能够考虑,但考虑到软件系统更新兼容性问题,放弃QGIS-Android中的编译方法,使用OSGeo4A进行编译调试安装。android

    千万不要被网上那些已通过时博文干扰,毕竟时间是宝贵的,生命是本身的。git

    更新代码github

OSGeo4Aubuntu

#us@ubuntu:/opt/code$ git clone -b 20181214 https://github.com/opengisch/OSGeo4A.git
us@ubuntu:/opt/code$ git clone https://github.com/opengisch/OSGeo4A.git
us@ubuntu:/opt/code/OSGeo4A$ cp config.conf.default config.conf
us@ubuntu:/opt/code/OSGeo4A$ vim config.conf
# nano config.conf
  6 export ANDROIDSDK="/opt/android/android-sdk-linux"
  7 export ANDROIDNDK="/opt/android/android-ndk-r12b"
  8 export QT_ANDROID_BASE="/opt/android/Qt5.11.3/5.11.3/"
 26 #选择本身适用的arm架构,
 #export ARCHES=("armeabi-v7a" "x86")
 27 export ARCHES=("armeabi-v7a")

us@ubuntu:/opt/code/OSGeo4A$ ./distribute.sh -dqgis -mqgis

编译过程当中可能须要的配置vim

crystax 因为官方使用的是crystax编译的,指定依赖libcrystax.so。所以在外部找了一个针对armeabi-v7a架构的so库缓存

原始库下载:https://github.com/OSVR/Unity-VR-Samples/tree/master/Assets/Plugins/Android/libs/armeabi-v7a架构

us@ubuntu:/opt/android/android-ndk-r12b/sources/crystax/libs/armeabi-v7a/thumb$ ls
libcrystax.so  libcrystax.so.meta

先编译必备的依赖库app

// 为避免缓存影响
us@ubuntu:/opt/code/OSGeo4A/build/geos$ rm -r build-armeabi-v7a/

set( ANDROID_LINKER_FLAGS "--sysroot=${ANDROID_SYSROOT}" )

us@ubuntu:/opt/code/OSGeo4A/recipes/qtkeychain
 47 # try mkdir -p $BUILD_qtkeychain/build-$ARCH
 48 # try cd $BUILD_qtkeychain/build-$ARCH
 49 try mkdir -p $BUILD_PATH/qtkeychain/build-$ARCH
 50 try cd $BUILD_PATH/qtkeychain/build-$ARCH
try cmake \
-DANDROID_TOOLCHAIN_VERSION=gcc-4.9
#修订完成依然编译不经过提示文件夹中不包含CMakeList.txt文件
最后把androidkeystains里面的文件及文件夹都复制都build-$ARCH文件夹中


// 编译exiv2lib是有个timegm没法识别,这里就先屏蔽他,等有办法解决后才处理
1108     void CrwMap::encode0x180e(const Image&      image,
1109                               const CrwMapping* pCrwMapping,
1110                                     CiffHeader* pHead)
1111     {
1112         assert(pCrwMapping != 0);
1113         assert(pHead != 0);
1114 
1115         time_t t = 0;
1116         const ExifKey key(pCrwMapping->tag_, Internal::groupName(pCrwMappin     g->ifdId_));
1117         const ExifData::const_iterator ed = image.exifData().findKey(key);
1118         if (ed != image.exifData().end()) {
1119             struct tm tm;
1120             std::memset(&tm, 0x0, sizeof(tm));
1121             int rc = exifTime(ed->toString().c_str(), &tm);
1122 //            if (rc == 0) t = timegm(&tm);

执行qgis编译时须要使用的库flex

us@ubuntu:/opt/code/OSGeo4A$ sudo apt-get install -y flex
us@ubuntu:/opt/code/OSGeo4A$ sudo apt-get install -y bison

编译成功

        后来发现编译真的不是很难,难的是语言,看国外的文档,一直半解,看国内的文档,千篇一概,资源过分重载,互联网免费的时代,红利逐渐褪去,剩下的就是资本市场。

相关文章
相关标签/搜索