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开发环境(离线部署)(转)的更多相关文章

  1. 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 ...

  2. ArcGIS Runtime SDK for WPF学习笔记(一)

    本节主要讲解如何安装ArcGIS Runtime SDK,以及移除注释与水印. 附上ArcGIS Runtime SDK for .NET的官方操作手册网址:https://developers.ar ...

  3. 《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述

    1.前言 ArcGIS Runtime SDK是一整套用于构建原生及跨平台的地图应用程序的开发包,包括移动设备的Android.iOS.Windows Phone,针对桌面的.Net.Java.OSX ...

  4. 《ArcGIS Runtime SDK for Android开发笔记》

    开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>——(1).And ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述

    1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步

    1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...

  7. 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用

    1.前言 学习ArcGIS Runtime SDK开发,其实最推荐的学习方式是直接看官方的教程.示例代码和帮助文档,因为官方的示例一般来说都是目前技术最新,也是最详尽的.对于ArcGIS Runtim ...

  8. 《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境

    1.前言 2015年1月15日,发布ArcGIS Runtime SDK for Android v10.2.5版本.从该版本开始默认支持android studio开发环境,示例代码的默认开发环境也 ...

  9. 《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO

    1.前言 移动GIS项目开发中点线面的要素绘制及编辑是最常用的操作,在ArcGIS Runtime SDK for iOS 自带AGSSketchLayer类可以帮助用户快速实现要素的绘制,图形编辑. ...

随机推荐

  1. apache的扩展模块安装

    /* 当需要用到Apache的扩展模块时, 就要用到了apache的扩展工具 apxs */ #在使用这个功能之前,请先确认是否已经加载了 mod_so 模块,方法是: [root@localhost ...

  2. Linux设备驱动--内存管理

           MMU具有物理地址和虚拟地址转换,内存访问权限保护等功能.这使得Linux操作系统能单独为每个用户进程分配独立的内存空间并且保证用户空间不能访问内核空间的地址,为操作系统虚拟内存管理模块 ...

  3. NOIP 2011 Day 1

    NOIP 2011 Day 1 tags: NOIP 搜索 categories: 信息学竞赛 总结 铺地毯 选择客栈 Mayan游戏 铺地毯 Solution 因为只会询问一个点被谁覆盖, 而且后面 ...

  4. hive学习(三) hive的分区

    1.Hive 分区partition 必须在表定义时指定对应的partition字段 a.单分区建表语句: create table day_table (id int, content string ...

  5. 《java并发编程实战》读书笔记3--对象的组合

    希望将一些现有的线程安全组件组合为更大规模的组件或程序 设计线程安全的类 如果对象中所有的域是基本类型变量,那么这些域将构成对象的全部状态.例如,LinkedList的状态就包括该链表中所有节点对象的 ...

  6. mysql-表完整性约束

    阅读目录 一 介绍 二 not null与default 三 unique 四 primary key 五 auto_increment 六 foreign key 七 总结     一 介绍 回到顶 ...

  7. 基于rest_framework和redis实现购物车的操作,结算,支付

    前奏: 首先,要在主机中安装redis,windows中安装,下载一个镜像,直接进行下一步的安装,安装成功后,在cmd中输入redis-cli 安装python的依赖库: redis     和   ...

  8. html5 -audio-移动端如何自动播放

    最近在做一些活动类页面或者类似于易企秀类型的轻应用经常遇到关于audio标签的应用,对于audio相关的常用知识点以及一些相关的问题如下: <audio id="audios" ...

  9. laravel中新增路由文件

    随着业务的发展,前后台和不同平台的代码都写在一个路由文件里面会非常庞杂,这时候就诞生了拆分路由文件的需求,好在Lavravel给我们提供了支持: 1.在routes文件夹中添加新的路由文件如:admi ...

  10. K8S的APISERVER,应用了HTTPS之后,命令行如何访问?

    用命令行总是很麻烦,因为要自定义一些证书的位置....... curl https://1.2.3.1:443/api/v1/nodes \ --cacert /etc/kubernetes/pki/ ...