Flutter应用地图在模拟器正常显示 打包APK后安卓真机不显示如何解决
Flutter地图模拟器正常、打包APK后安卓实体机无法显示的解决方案
按照以下优先级排查即可解决99%的同类问题:
- 签名SHA1配置错误
绝大多数这类问题的根因是地图服务商后台仅绑定了debug环境的签名SHA1,未绑定release打包使用的签名SHA1。你可以进入安卓项目根目录执行命令获取release签名的SHA1值:
类Unix系统执行./gradlew signingReport,Windows系统执行gradlew.bat signingReport,将获取到的release SHA1值同步到地图服务商后台的应用配置中即可。 - 网络权限配置缺失
检查android/app/src/main/AndroidManifest.xml文件中是否添加了互联网访问权限,注意不要把权限加在debug或test目录下的清单文件中,正式打包只会读取main目录下的配置:
如果你使用的地图服务走http明文请求,还需要在application节点添加明文流量许可:<uses-permission android:name="android.permission.INTERNET" /><application android:usesCleartextTraffic="true" ... 其他原有配置 > - 代码混淆规则缺失
release打包默认会开启代码混淆与裁剪,如果没有配置地图SDK对应的保留规则,会导致地图核心类被误删无法正常运行。需要在android/app/proguard-rules.pro文件中添加对应地图服务商提供的混淆规则,例如高德地图需要添加:-keep class com.amap.api.**{*;} -keep interface com.amap.api.**{*;} - so库架构不匹配
检查android/app/build.gradle中的ndk配置是否包含了地图SDK支持的abi架构,避免打包出的APK缺少对应架构的so库导致地图加载失败,常用配置如下:android { defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } }
内容的提问来源于stack exchange,提问作者AsadUllah Yousuf
相关产品推荐
相关产品推荐

