Cordova Android 13环境下Google Maps无法渲染问题求助
将Ionic应用升级至Cordova Android 13后,Google Maps无法渲染,仅显示黑屏,无报错或应用崩溃现象。控制台输出js_CordovaGoogleMaps-for-android_ios.js第802行的background = #FFF,浏览器及iOS端运行正常且无该日志。
相关package.json内容:
{ ... "dependencies": { "@angular/common": "~8.1.2", "@angular/core": "~8.1.2", "@ionic-native/core": "^5.0.0", "@ionic-native/device": "^5.36.0", "@ionic-native/firebase-x": "^5.36.0", "@ionic-native/geolocation": "^5.36.0", "@ionic-native/google-maps": "^5.0.0-beta.27", "@ionic/angular": "^4.7.1", "colors": "1.4.0", "cordova-plugin-device": "^2.0.2", "cordova-support-android-plugin": "^1.0.1", }, ... "devDependencies": { "@angular/cli": "~8.1.2", "@angular/compiler": "~8.1.2", "@angular/compiler-cli": "~8.1.2", "@chacabuk/cordova-plugin-googlemaps": "github:TSFArg/cordova-plugin-googlemaps", "@ionic/angular-toolkit": "^2.1.1", "@types/node": "~8.9.4", "cordova-android": "^13.0.0", "cordova-android-play-services-gradle-release": "^4.0.0", "cordova-androidx-build": "^1.0.4", "cordova-plugin-androidx-adapter": "^1.1.3", "cordova-plugin-device": "^2.0.2", "cordova-plugin-firebasex": "^16.0.0-cli", }, ... "cordova": { "plugins": { "uk.co.workingedge.phonegap.plugin.launchnavigator": { "OKHTTP_VERSION": "3.12.0", "LOCATION_USAGE_DESCRIPTION": "" }, "cordova-plugin-geolocation": { "GPS_REQUIRED": "true" }, "cordova-plugin-firebasex": { "ANDROID_FIREBASE_AUTH_VERSION": "21.2.0" }, "cordova-plugin-androidx-adapter": {}, "cordova-android-play-services-gradle-release": { "PLAY-SERVICES-MAPS": "17.0.0" }, "barcodescanner-ec": { "ANDROID_SUPPORT_V4_VERSION": "27.+" }, "cordova-plugin-googlemaps": {}, }, } ... }
一、排查遗漏的配置项
Google Maps API密钥配置
检查config.xml中是否正确配置Android平台的API密钥,格式如下:<platform name="android"> <preference name="GOOGLE_MAPS_ANDROID_API_KEY" value="你的Android API密钥"/> </platform>确认密钥已启用Android Maps SDK权限,且SHA-1指纹与应用签名匹配。
Android 13权限适配
Android 13新增POST_NOTIFICATIONS权限,部分地图初始化逻辑可能依赖该权限用于位置更新,需在AndroidManifest.xml中添加:<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>同时确保已声明必要的位置权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>插件版本兼容性
- 当前
@ionic-native/google-maps为5.0.0-beta.27,版本较旧,可能与Cordova Android 13不兼容,建议升级到^5.36.0,与其他@ionic-native插件版本对齐。 - 检查
@chacabuk/cordova-plugin-googlemaps的GitHub仓库是否有Cordova Android 13适配更新,或切换到官方维护的cordova-plugin-googlemaps插件。
- 当前
Play Services版本匹配
当前配置的PLAY-SERVICES-MAPS为17.0.0,版本过低,易与Cordova Android 13的Gradle环境冲突,建议升级到18.0.0+,修改cordova.plugins配置:"cordova-android-play-services-gradle-release": { "PLAY-SERVICES-MAPS": "18.1.0" }
二、获取调试信息的方法
启用插件调试模式
初始化Google Maps时添加debug: true参数,输出更详细的日志:this.map = GoogleMaps.create('map_canvas', { debug: true, // 其他配置项 });查看Android Studio Logcat日志
连接设备或启动模拟器,打开Android Studio的Logcat面板,筛选GoogleMaps或CordovaGoogleMaps标签的日志,获取原生层错误信息(如API密钥验证失败、权限缺失、资源加载失败等)。Chrome DevTools调试网络请求
在Chrome地址栏输入chrome://inspect,连接设备后选择对应应用,在Network面板查看maps.googleapis.com相关请求,确认是否存在请求失败或错误状态码。查看Gradle构建日志
执行构建命令时添加--verbose参数,排查依赖冲突或构建错误:ionic cordova build android --verbose
内容的提问来源于stack exchange,提问作者anderlaini

