《ArcGIS Runtime SDK for Android開發筆記》——基於Android Studio構建ArcGIS Android開發環境(離線部署)

來源:互聯網
上載者:User

標籤:

1、前言

在上一篇的內容裡我們介紹了基於Android Studio構建ArcGIS Runtime SDK for Android開發環境的基本流程,流程中我們採用的是基於Gradle的構建方式,在這種方式裡主要通過設定maven倉庫位置,設定編譯選項、依賴版本在連網環境下下載對應SDK依賴包。

但是在網路情況不好的情況下這種方式就不行了,那怎麼解決在離線環境或者內網環境實現開發流程呢?目前瞭解到的有兩種方式:

1)配置內網環境maven倉庫,預先緩衝到內網環境下,然後離線調用。

2)採用直接拷貝引用方式,拷貝jar包、so庫到對應第三方庫支援位置,直接調用使用。

這兩種方式各有各的優劣,看具體使用情境,在這裡我們主要介紹第二種拷貝引用的方式。

轉載請註明出處:http://www.cnblogs.com/gis-luq/p/4760377.html

 

2、離線部署流程2.1、下載ArcGIS Runtime SDK for Android的SDK包

1) 登陸ArcGIS Runtime SDK for Android開發人員資源中心。

 

2) 登陸後點擊下載按鈕、在下載頁面下載對應SDK包

 

2.2、拷貝相關支援函數庫到指定項目對應位置並添加引用

1)解壓下載下來的zip包,SDK包中主要包含以下內容:

其中裡面比較重要的有以下幾項:1、doc —— 該版本SDK對應的API文檔,官網一直都是最新的,需要查看舊版API或者指定版本API說明的的一般需要到這裡尋找2、lib-project —— aar格式的函數庫,例如:arcgis-android-v10.2.6-2.aar3、libs —— jar和so格式的函數庫,一般在項目中拷貝到專案檔夾下,引用即可,可實現離線部署4、samples——範例程式碼。官方所有範例程式碼都在這裡,新版基於Android studio 開發環境其他說明:SDK包下載及說明也可以參考博文http://www.cnblogs.com/gis-luq/p/4735815.html

2)開啟SDK包中lib檔案夾,將jar包拷貝包對項目的lib檔案夾下

將libs中的:arcgis-android-api.jar、arcgis-android-app-toolkit.jar、jackson-core-1.9.5.jar、jackson-mapper-1.9.5.jar、jcifs-1.3.17.jar這個5個jar包拷貝到建立Android項目HelloMap2中的../app/libs檔案夾下

3)在項目的../java/main檔案夾下建立jniLibs檔案夾,並將armeabi、armeabi-v7a、x86三個檔案夾拷貝到jniLibs檔案夾下。

 

說明:其實這裡關於如何在android studio配置java訪問so庫的方式有很好幾種,在網上也有相關的說明部落格,這裡我是選了我認為相對最簡單一種做了測試,並測試OK,所以用了這種方式。其他方式暫時沒有測過
2.3、添加UI及代碼資訊

1)在布局檔案activity_main.xml中添加mapview組件

    <com.esri.android.map.MapView        android:id="@+id/map"        android:layout_width="fill_parent"        android:layout_height="fill_parent">    </com.esri.android.map.MapView>

在這裡我們注意到環境並沒有識別到com.esri.android.map.MapView類,並提示異常。切換項目顯示方式為project。

選中項目下app/libs/arcgis-android-api.jar右鍵設定Add As Library,添加之後“找不到com.esri.android.map.MapView類”的問題就沒有了。

同時我們查看app下的build.gradle,發現增加了一條編譯選項,這裡我們用代碼的方式直接加在這裡也是可以的。

2)添加代碼資訊,實現MapView的UI和代碼綁定,添加一個圖層並顯示出來

private MapView mapView = null;
this.mapView = (MapView)this.findViewById(R.id.map);//設定UI和代碼綁定
String strMapUrl="http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer";
ArcGISTiledMapServiceLayer arcGISTiledMapServiceLayer = new ArcGISTiledMapServiceLayer(strMapUrl);
this.mapView.addLayer(arcGISTiledMapServiceLayer);

2.4、設定應用程式許可權

對於絕大多數的ArcGIS Android apps的應用幾乎都需要網路的支援;也有一些應用可能會需要訪問裝置的sdcard,需要對該卡有讀寫的許可權;除此對於GIS來說最常用的功能就是定位,應用應該具備定位許可權。 ArcGIS Android apps的MapView使用了OpenGL2.x,所以在android應用程式的設定檔AndroidManifest.xml中還需添加 OpenGL的支援,因此應用的設定檔至少包含下面的配置資訊:

    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />        <uses-feature            android:glEsVersion="0x00020000"            android:required="true" />

2.5、編譯運行應用程式

直接運行後我們還發現了這樣的一個錯誤,提示需要忽略許可資訊在打包選項中。

開啟build.gradle(Module:app)設定排除相關資訊

 packagingOptions {        exclude ‘META-INF/LGPL2.1‘        exclude ‘META-INF/LICENSE‘        exclude ‘META-INF/NOTICE‘    }

重新運行編譯,程式通過

《ArcGIS Runtime SDK for Android開發筆記》——基於Android Studio構建ArcGIS Android開發環境(離線部署)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.