《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)(转)
1、前言
在上一篇的内容里我们介绍了基于Android Studio构建ArcGIS Runtime SDK for Android开发环境的基本流程,流程中我们采用的是基于Gradle的构建方式,在这种方式里主要通过设置maven仓库位置,设置编译选项、依赖版本在联网环境下下载对应SDK依赖包。
但是在网络情况不好的情况下这种方式就不行了,那怎么解决在离线环境或者内网环境实现开发流程呢?目前了解到的有两种方式:
1)配置内网环境maven仓库,预先缓存到内网环境下,然后离线调用。
2)采用直接拷贝引用方式,拷贝jar包、so库到对应第三方库支持位置,直接调用使用。
这两种方式各有各的优劣,看具体使用场景,在这里我们主要介绍第二种拷贝引用的方式。
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.aar
3、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)在项目的../src/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'
}

重新运行编译,程序通过

文章若无特殊说明均为原创,原创作品,允许转载,转载时请务必以超链接形式标明文章出处、作者信息和本声明。
博客:http://www.cnblogs.com/gis-luq 作者:gis-luq 邮箱:luqiang.gis@foxmail.com
《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)(转)的更多相关文章
- ArcGIS Runtime SDK for WPF已不更新,后续将被ArcGIS Runtime SDK for .NET取代
ArcGIS Runtime SDK 10.2.5 for WPF is now available! by mbranscomb and Rex Hansen on January 27, 2015 ...
- ArcGIS Runtime SDK for WPF学习笔记(一)
本节主要讲解如何安装ArcGIS Runtime SDK,以及移除注释与水印. 附上ArcGIS Runtime SDK for .NET的官方操作手册网址:https://developers.ar ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述
1.前言 ArcGIS Runtime SDK是一整套用于构建原生及跨平台的地图应用程序的开发包,包括移动设备的Android.iOS.Windows Phone,针对桌面的.Net.Java.OSX ...
- 《ArcGIS Runtime SDK for Android开发笔记》
开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>——(1).And ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述
1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步
1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用
1.前言 学习ArcGIS Runtime SDK开发,其实最推荐的学习方式是直接看官方的教程.示例代码和帮助文档,因为官方的示例一般来说都是目前技术最新,也是最详尽的.对于ArcGIS Runtim ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境
1.前言 2015年1月15日,发布ArcGIS Runtime SDK for Android v10.2.5版本.从该版本开始默认支持android studio开发环境,示例代码的默认开发环境也 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO
1.前言 移动GIS项目开发中点线面的要素绘制及编辑是最常用的操作,在ArcGIS Runtime SDK for iOS 自带AGSSketchLayer类可以帮助用户快速实现要素的绘制,图形编辑. ...
随机推荐
- NFS+inotify实时同步
Inotify简介 Inotify是一种文件系统事件通告机制,能够实时监控文件系统下文件的访问.修改.删除等各种变化情况并将其作为事件通告给用户态应用程序.Linux内核从2.6.13版本后已经集成了 ...
- 502 bad gateway,ngix
1.ftm对nginx的解析出现问题:20171228
- vsftpd 虚拟用户配置
vsftpd 虚拟用户的作用是 通过不同的虚拟用户可以有不同的根目录. 从 2.3.5 版本之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能在具有写权限了,如果检查 ...
- php的设计模式
1.单一职责原则 单一职责原则(Single Responsibility Principle) 含义:1.避免相同的职责分散到不同的类中,2.避免一个类承担太多的职责: srp的好处: 减少类之间的 ...
- HDU-4255
A Famous Grid Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 三:Storm设计一个Topology用来统计单词的TopN的实例
Storm的单词统计设计 一:Storm的wordCount和Hadoop的wordCount实例对比
- 【剑指offer】面试题 11. 旋转数组的最小数字
面试题 11. 旋转数组的最小数字 题目描述 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4, ...
- JavaScript 闭包(随笔)
闭包,伟大的闭包.... 先看看百科对百度的定义是什么样的. 百科说:闭包是指可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境 ...
- 虚拟机Visualbox安装CentOS
选择安装CentOS系统 进入了安装界面,选择语言,并选择继续 安装的主界面 1.先选择日期时间,选择了亚洲,并选择上海,再点击左上角的完成按钮 2.再选择键盘,选择英文 3.选择语言为英语 4.选择 ...
- python+django+vue搭建前后端分离项目
以前一直是做基于PHP或JAVA的前后端分离开发,最近跟着python风搭建了一个基于django的前后端分享项目 准备工作:IDE,[JetBrains PyCharm2018][webpack 3 ...