在Android程序中,获取地图数据只需要调用一个Java方法就可以:
result = jni.getEncryptTile(deviceId, location, bundleBase, level, row, col);
现在,即使反编译了Android程序中的dex文件,你也无法知道这句代码背后调用的动态链接库中实际的算法。
下面是加密ArcGIS离线地图在Android上的效果:
图 2 Android上显示加密离线地图的效果
附录:Android上进行JNI开发的步骤 准备开发环境1. 下载安装Cygwin:,注意安装时需要选择Devel工具包以及vim(用以编辑环境变量)。
2. 下载Android NDK,我使用的是r5版本:,解压到本地磁盘。
新建一个Java类在Android工程中新建一个Java类,注意”native”标记:
package com.esri.wuyf;
public class JNI {
public native byte[] getEncryptTile(String deviceId, String location, String bundleBase, int level, int row, int col);
}