首页 > 解决方案 > Xamarin.Forms.Maps 在 android 7+ 上崩溃

问题描述

我是一名初学者 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
结果:相同。

请问,谁知道是什么原因?

更多信息: Android 应用程序选项 pg1 Android 应用程序选项 pg2 Android 应用程序选项 pg3

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>

标签: xamarin.formsxamarin.forms.maps

解决方案


由于您没有提供任何错误代码,我只能怀疑两个原因:

  1. 也许map在新版本的 android 中需要某种许可?再检查一遍
  2. 在创建 APK 时,您是否检查了所有架构?在 Android 选项 -> 高级 -> 支持的架构 -> 选择所有架构下。更多信息在这里:https ://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/cpu-architectures?tabs=windows

推荐阅读