配置編譯環境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
編譯成功
後來發現編譯真的不是很難,難的是語言,看國外的文檔,一直半解,看國內的文檔,千篇一概,資源過分重載,互聯網免費的時代,紅利逐漸褪去,剩下的就是資本市場。