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

編譯成功

        後來發現編譯真的不是很難,難的是語言,看國外的文檔,一直半解,看國內的文檔,千篇一概,資源過分重載,互聯網免費的時代,紅利逐漸褪去,剩下的就是資本市場。

相關文章
相關標籤/搜索