RAD Studio 11 TMapView组件开发安卓Google Map应用启动崩溃/地图空白求助
问题诱因
- 启动崩溃核心原因:Google Maps Android SDK初始化时会校验当前应用的包名、签名SHA-1指纹是否和你在Google Cloud控制台给API密钥绑定的限制信息匹配,校验失败时SDK会直接抛出安全异常,触发应用闪退。另外如果你的AndroidManifest.xml未声明地图SDK必需的权限、API密钥元数据项,也会导致SDK初始化失败崩溃。
- 改绑定包名后可启动但地图空白原因:你修改绑定包名后刚好规避了SDK的崩溃级校验逻辑(部分版本SDK校验不通过时不会强制闪退),但API密钥和你实际应用的签名、包名仍然不匹配,Google服务端拒绝返回地图瓦片数据,因此地图区域显示为空。此外如果API密钥未开启Google Maps Android API服务,也会出现相同的空白问题。
可行修复方案
1. 修正API密钥绑定规则
- 进入Google Cloud控制台对应项目的凭据管理页,找到你使用的地图API密钥,先确认该密钥已开启「Google Maps Android API」服务,未开启的话前往API库搜索启用即可。
- 提取RAD Studio 11当前打包使用的签名文件的SHA-1指纹:如果是调试模式,默认签名文件路径为
C:\Users\<你的系统用户名>\AppData\Roaming\Embarcadero\BDS\22.0\debug.keystore,使用以下命令提取指纹,默认密钥库密码为android:keytool -list -v -keystore debug.keystore -alias androiddebugkey - 将提取到的SHA-1指纹、你应用的实际包名(可在RAD Studio项目选项→应用程序→清单页面查询),填写到API密钥的安卓应用限制列表中,保存配置后等待3-5分钟生效。
- 如果是打Release正式包,需要额外把Release模式使用的签名文件的SHA-1指纹也添加到绑定列表,避免正式包出现相同问题。
2. 核对安卓清单文件配置
确认你的AndroidManifest.xml中已添加地图必需的权限以及API密钥声明:
<!-- 基础权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 定位权限(按需添加,不需要定位可以不加) --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <application ...> <!-- Google Map API密钥声明 --> <meta-data android:name="com.google.android.geo.API_KEY" android:value="你的实际API密钥" /> ... </application>
3. RAD Studio 11专项检查
- 打开项目→选项→Deployment页面,确认Google Play服务相关的依赖库已全部勾选,没有遗漏依赖项。
- 清空项目缓存后重新编译打包,避免旧的配置残留导致问题。
内容的提问来源于stack exchange,提问作者Kenny Choi
相关产品推荐
相关产品推荐

