Google Map Activity运行报错:设备不支持Google Play Services
解决Google Map Activity报错“MobileMapActivity won't run without Google Play Services”
核心排查与修复方案
1. 确认设备/模拟器的GMS支持情况
- 模拟器场景:必须使用带Google Play标识的系统镜像创建AVD。创建AVD时,选择Pixel系列等带有Google Play标的镜像(普通Android镜像不含完整GMS),启动后确认Google Play商店可正常打开。
- 真机场景:国内行货多数预装阉割版系统(无GMS框架),需确认设备是否有Google Play商店(有商店则GMS完整)。部分华为机型因限制无法安装GMS,这类设备无法运行依赖GMS的Google Map应用。
2. 检查项目依赖配置
打开模块级app/build.gradle,确保添加了正确的Google Play Services依赖(使用最新稳定版):
dependencies { // Google Maps核心依赖 implementation 'com.google.android.gms:play-services-maps:18.2.0' // 若用到定位功能,添加此依赖 implementation 'com.google.android.gms:play-services-location:21.0.1' }
同步Gradle后,确认依赖下载完成。
3. 完善AndroidManifest.xml配置
除API密钥外,需补充GMS版本元数据、必要权限和OpenGL要求:
<!-- 权限声明 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 要求设备支持OpenGL ES 2.0(Google Map必需) --> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <application ...> <!-- GMS版本元数据 --> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <!-- Google Map API密钥 --> <meta-data android:name="com.google.android.geo.API_KEY" android:value="你的API密钥" /> <!-- 你的MobileMapActivity声明 --> <activity android:name=".MobileMapActivity" /> </application>
4. 添加GMS可用性检查代码
在MobileMapActivity的onCreate方法中,先检查GMS状态,避免直接崩溃并给出明确提示:
import com.google.android.gms.common.GoogleApiAvailability; import com.google.android.gms.common.ConnectionResult; import android.widget.Toast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 检查Google Play Services可用性 int gmsStatus = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this); if (gmsStatus != ConnectionResult.SUCCESS) { if (GoogleApiAvailability.getInstance().isUserResolvableError(gmsStatus)) { // 弹出修复对话框(如更新GMS) GoogleApiAvailability.getInstance().getErrorDialog(this, gmsStatus, 9000).show(); } else { // 设备不支持GMS,提示并关闭页面 Toast.makeText(this, "此设备不支持Google Play Services", Toast.LENGTH_LONG).show(); finish(); } return; } // GMS可用,继续初始化地图 setContentView(R.layout.activity_mobile_map); // 你的地图初始化逻辑... }
5. 其他排查细节
- 验证API密钥限制:登录Google Cloud控制台,确认Maps SDK for Android的API密钥已绑定正确的包名和SHA-1指纹(debug和release指纹都需添加,测试阶段先确保debug指纹正确)。
- 清除构建缓存:Android Studio中点击
File -> Invalidate Caches... -> Invalidate and Restart,清除缓存后重新构建项目。 - 真机更新GMS:打开Google Play商店,搜索“Google Play Services”,确保安装最新版本。
内容的提问来源于stack exchange,提问作者K.H. Shihan Nuwanjith Udayanga
相关产品推荐
相关产品推荐

