使用条件:
1. IDE环境为AndroidStudio
2. 网络可以访问到jcenter或maven
使用步骤:
1. 在module的build.gradle中添加maven或jcenter仓库地址(Android Studio默认会在project的build.gradle为所有module自动添加jcenter的仓库地址,如果已存在,则不需要重复添加)
确认project的build.gradle中是否有如下配置:

code:
allprojects{
repositories {
jcenter()
}
}
如果有的话请进入第二步。
若没有则可以添加上述红框内的配置,或者只在需要使用sdk的module中为build.gradle添加repositories配置,如图:

code:
repositories {
jcenter()
}
2. 在module的dependencies中添加SDK依赖配置,下图以3d的demo工程为例展示了如何添加3d,location,search三个sdk

code:
dependencies { compile 'com.amap.api:3dmap:5.0.0'
compile 'com.amap.api:search:5.0.0'
compile 'com.amap.api:location:3.3.0'
}
3. 执行Android Studio中gradle的build

注意:
1. 如果build失败提示com.amap.api:XXX:X.X.X 找不到,确认拼写及版本号是否正确,如果访问不到jcenter可以切换为maven仓库尝试一下
2.
3d地图SDK与navi导航SDK最新的库即包含jar也包含了so,因此只需要引入一行compile,支持的版本号从5.0.0开始,请注意名称与之前版本的区别
3d:'com.amap.api:
3dmap:5.0.0
navi:'com.amap.api:
navi-3dmap:5.0.0
3. 5.0.0版本前navi导航SDK因为依赖定位SDK,所以请不要同时引入5.0.0版本以下的location和navi-solo SDK,因为navi中已经包含了location需要的类库, 5.0.0版本后,导航SDK依赖了3d SDK,因此请不要在5.0.0版本之上同时引用3dmap和navi-3dmap SDK
示例导航demo配置如下:

code:
compile 'com.amap.api:navi-3dmap:5.0.0'
4. 所有SDK版本号均与官网发版一致,如果使用group:artifact:latest.integration这种在版本号后附上版本号占位符的引入形式,则gradle在每次build的时候会自动搜索并拉取最新版本的SDK。这种方式对build时间有一些影响,请权衡使用。示例:
会拉取导航5.0.0以上最新的版本

code:
//使用版本号占位符,推荐compile 'com.amap.api:navi-3dmap:latest.integration'
5. 使用 gradle 配置指定内核版本: 5.0.0版本后,3d与navi统一支持全平台(包含armeabi,armeabi-v7a,arm64-v8a,x86,x86_64),不需要特殊配置,如果不希望支持五种类型,请在官网下载jar包,并自行去除多余的平台so 而5.0.0版本前由于 3d 与 navi 支持的内核版本数不一致, 3d 支持 armeabi , armeabi-v7a ,而 navi 只支持 armeabi ,因此运行在支持 armeabi-v7a 的平台上时会出现找不到 so 问题,所以在使用 navi SDK和3d SDK 时建议使用 gradle 配置只支持指定内核即 armeabi 避免程序崩溃。具体代码如下:
a.在项目application model的build.gradle添加如下节点
android {
defaultConfig {
ndk {
abiFilters 'armeabi'
}
}
}
b.然后在project的根目录(和local.properties同级)新建一个gradle.properties文本文件,文件里面加入下面这行
android.useDeprecatedNdk=true
同理,如果只使用3d SDK建议也使用
abiFilters 'armeabi' ,'armeabi-v7a'配置来避免与其他SDK产生不兼容
6. 其他build失败问题请确认网络及Android Studio本身gradle编译问题,相关疑问可以在论坛中发帖留言,也欢迎大家积极反馈相关问题
截至到本帖发布时间2017-04-14各个SDK最新版本情况:
常见问题:1.com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry
class 类重复,请检查是否导入了重复的类库,如5.0.0版本以下 同时引入 location与导航,或5.0.0版本以上 同时引入 导航与3d地图
2.导航出现白屏或崩溃
考虑so的版本问题,比如运行手机为 armeabi-v7a 内核,具体参考上文注意第五条
3. com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK lib/x86/libRoadLineRebuildAPI.so
首先确定除了3d的so是否同时引用了navi的so,如果的确是引用了一次so并报错时,仔细阅读出错信息,找到对应的gradle的task。部分AS的build版本下多module的编译会报so重复问题,如主module为app,地图SDK是在一个Android Library module名为maplib进行的配置,app中配置了compile project为maplib,某些gradle插件版本下,编译中会首先合并两个module的compile配置,因此地图SDK会被app module导入一次,然后app还有个task 名字为transformNativeLibsWithMergeJniLibsForDebug,该task会将依赖的module中的jni在做一次merge,因而导致so重复,解决方案为在app的配置中跳过该task
示例代码:
task.whenTaskAdded{task->
if(task.name.contains('transformNative_libsWithMergeJniLibsForDebug')){
task.enable=false
}
}