配置编译环境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
编译成功
后来发现编译真的不是很难,难的是语言,看国外的文档,一直半解,看国内的文档,千篇一概,资源过分重载,互联网免费的时代,红利逐渐褪去,剩下的就是资本市场。