Flutter 集成 amap_flutter_location
今天用 amap_flutter_location 写了个demo,过程中一直报:INVALID_USER_SCODE
,error_cod
: 1008,下面给大家看下主要流程
一、注册账号
- 在高德开放平台注册开发者账号
- 创建应用,获取 app key
二、配置
- 导入 amap_flutter_location
- gradle build 成功后,将 amap_flutter_location -> build.gradle -> android -> dependencies 节点下,引入插件的
compileOnly
修改为api
例如:
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 16
}
lintOptions {
disable 'InvalidPackage'
}
dependencies {
//compileOnly 'com.amap.api:location:5.6.0'
api 'com.amap.api:location:5.6.0'
}
}
- 清单文件下配置相关权限,并在运行时请求必要权限,具体请参考:高德开放平台
<!-- 这是我自己配置的,亲测可行 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
- 在清单文件
application
节点下导入下面的service
ps: 注意,如果没有把compileOnly
修改为api
,这里就会报错
<service android:name="com.amap.api.location.APSService" />
三、使用
使用的话参考 文档 就足够了,主要是要注意配置的信息是否正确。下面列几个坑点
- 生成 app key 的时候需要证书的 SHA1 值,这里我使用通过命令行生成的 keystore 死活不行,最后通过Android Studio生成的就可以了(怀疑是别名的问题)
- 报错:INVALID_USER_SCODE,报这个错主要就是配置问题。先检查 SHA1 值是否正确;确保没有问题后,在检查配置的包名有没有问题;不对的话,看看自己有没有配置service;最后还不行,就看看 官方回复