有天 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: