我是一名初学者 xamarin.forms 开发人员,我为我的城镇开发了一些带有谷歌地图的免费应用程序。
该应用程序在所有 Visual Studio (2019) android 模拟器甚至我的旧手机 (android 4.3) 上都能完美运行。
申请的发布也很成功。
然而,在他的手机(android 9)上安装该应用程序的第一个用户向我报告说该应用程序已崩溃。只是在显示(尝试)地图时崩溃,没有任何错误消息。但是应用程序的任何其他(没有地图)“ContentPage”都可以正常工作。仅当用户尝试使用地图控件打开 ContentPage 时才会发生崩溃。
因为我没有真正的 android 9 设备(并且在所有 Visual Studio 的 android 模拟器上该应用程序都可以工作),所以我安装了 Nox Player:
https
://www.bignox.com/并创建了 2 个可用的模拟器:android 5.1.1和 android 7.1.2
结果:应用程序在 android 5 上成功运行并在 android 7 上崩溃(与 android 7 模拟器一起 - 模拟器程序只是关闭而没有任何错误消息)。
好的。我创建了一个最简单的测试 xamarin 表单地图应用程序 - 仅显示地图,仅此而已。
MainPage.xaml:
<ContentPage.Content>
<map:Map />
</ContentPage.Content>
同样的故事:适用于所有visual studio的android模拟器,适用于我的旧android 4.3设备,适用于nox-player android 5并在nox android 7上崩溃!
然后,我试图从微软文档中编译一个示例。例如:
https
://docs.microsoft.com/en-us/samples/browse/?products=xamarin&term=Xamarin.Forms.Maps所有这些示例都放在这里:
https ://github.com/xamarin/xamarin- forms-samples/tree/master/WorkingWithMaps
我刚刚下载了解决方案,将我的“com.google.android.maps.v2.API_KEY”替换为 AndroidManifest.xml 并编译它。没有更多的动作。
结果:完全相同的行为。
更准确地说,最初我使用了 Xamarin.Forms.GoogleMaps 包:
https
://github.com/amay077/Xamarin.Forms.GoogleMaps ,结果相同。
在此页面上还有已编译的带有示例
的apk的链接: https ://install.appcenter.ms/users/okuokuoku/apps/xfgooglemapsample/distribution_groups/trial
结果:相同。
请问,谁知道是什么原因?
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.comscreen.App1" android:installLocation="internalOnly">
<uses-sdk android:minSdkVersion="22" android:targetSdkVersion="28" />
<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" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="App1.Android" android:usesCleartextTraffic="true" android:icon="@mipmap/launcher_foreground">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="MY_API_KEY_SORRY_FOR_HIDING" />
</application>
</manifest>