我正在尝试在我的项目中实现 Jetpack Compose Map。在模拟器中工作正常,但在物理设备上却不行。
这不是 API_KEY 问题。我使用不同的密钥尝试了几次,但不适用于我当前的项目,但适用于我的其他项目。
我正在使用这些版本(最高编译SDK33)
implementation 'com.google.maps.android:maps-compose:2.15.0'
implementation 'com.google.android.gms:play-services-maps:18.2.0'
implementation 'com.google.android.gms:play-services-location:21.0.1'
版本不是问题,我创建了一个分支用compileSDK更新还是不行。
我仅使用地图创建一个基本屏幕。
val cameraPositionState = rememberCameraPositionState {
position = CameraPosition.fromLatLngZoom(LatLng(-17.1820972, 28.2918109), 10f)
}
GoogleMap(
modifier = Modifier
.fillMaxWidth()
.height(300.dp)
.padding(top = 40.dp),
cameraPositionState = cameraPositionState
)
显然我有互联网许可并且
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="myapi" />
这真的很奇怪,我有几个项目,但只有这些失败了。也许是为了使用 Firebase?这是我唯一的“更大的区别”。我包含了 sha1 和 sha256 用于调试和发布。
您说您的地图在模拟器上运行良好,但在物理设备上运行不佳。这可能是由于多种原因造成的,例如:
• 您的物理设备具有与模拟器不同版本的 Google Play 服务。您可以前往“设置”>“应用程序”>“Google Play 服务”来检查设备上的 Google Play 服务版本。您还可以按照此处的说明更新 Google Play 服务。
• 您的物理设备的配置或区域设置与模拟器不同。您可以通过转至设置 > 系统 > 语言和输入来检查设备的配置和区域设置。您还可以按照此处的说明更改设备的配置和区域设置。
• 您的物理设备具有与模拟器不同的网络或防火墙设置。您可以前往“设置”>“网络和互联网”来检查设备的网络和防火墙设置。您还可以按照此处的说明更改设备的网络和防火墙设置。
要解决此问题,您还可以通过将配置键maps.compose.debug设置为true来启用Jetpack Compose Map的调试模式。这将在 logcat 中打印有关地图和错误的更多信息。