Android 第三方服务踩坑记录

Server Error

这篇主要记录下自己在使用一些第三方服务时遇到的问题以及解决方法。

高德定位 API

有天 debug 时突然发现 app 定位功能不能用了,然后看了下 log,发现使用的高德定位 API 有如下报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
debug: uploadlocation W/System: Ignoring header cookie because its value was null.
debug: uploadlocation W/onLocationChanged: {"data":"保存成功"," status":0}
debug W/System.err: com.amap.api.services.core.AMapEXception: 用户MD5安全码未通过
debug W/System.err: at com.amap.api.col.sl.t.a(CoreUtil.java:137)
debug W/System.err: at com.amap.api.col.sl.t.b(CoreUtil.java:108)
debug W/System.err: at com.amap.api.col.sl.k.a(BasicHandler.java:107)
debug W/System.err: at com.amap.api.coL.sl.k.g(BasicHandler.java:142)
debug W/System.err: at com.amap.api.col.sl.k.a(BasicHandler.java:116)
debug W/System.err: at com.amap.api.col.sl.be.getFromLocation(GeocodeSearchCore.java:86)
debug W/System.err: at com.amap.api.col.sl.be$1.run(GeocodeSearchCore.java:144)
debug W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
debug W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
debug W/System.err: at java.lang.Thread.run(Thread.java:764)

经搜索,查询到造成这种错误的原因主要是 API Key 和绑定的应用包名不一致。

然后意识到自己前几天改过 gradle 配置,在 debug 版本中加入了后缀:

1
2
3
4
debug {
applicationIdSuffix ".debug"
...
}

所以,这就需要为测试版 app 单独添加一个 API Key,然后修改 build.gradle 添加变量 amap_api_key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
buildTypes {
release {
minifyEnabled false
...
resValue "string", "app_name", "@string/app_name_release"
resValue "string", "amap_api_key", "release_api_key"
}
debug {
applicationIdSuffix ".debug"
...
resValue "string", "app_name", "@string/app_name_debug"
resValue "string", "amap_api_key", "debug_api_key"
}
}

然后在 AndroidManifest.xml 中修改高德地图 API Key 的值:

1
2
3
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="@string/amap_api_key" />

这样问题就解决了。

顺便记录下如何修改 debug 版本的图标,在 src 下添加一个 debug 文件夹(和 main 同级),然后添加 res 文件夹,然后修改 debug 图标的命名和 main/res 下一致,再放到对应的文件夹下就可以了。如下:

1
2
3
4
5
6
7
8
9
src
|—debug
|———res
|————mipmap-XXX
|—————ic_launcer.png
|—main
|———res
|————mipmap-XXX
|—————ic_launcer.png