xamarin.forms - 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
结果:相同。
请问,谁知道是什么原因?
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>
解决方案
由于您没有提供任何错误代码,我只能怀疑两个原因:
- 也许
map
在新版本的 android 中需要某种许可?再检查一遍 - 在创建 APK 时,您是否检查了所有架构?在 Android 选项 -> 高级 -> 支持的架构 -> 选择所有架构下。更多信息在这里:https ://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/cpu-architectures?tabs=windows
推荐阅读
- mysql - 如何获取所有父母ID
- c# - 试图从非常大的数据中检索mysql中多个相关表的数据
- sql-server - 如何使用 c#.net 从组合框中的 NpgsqlConnection 获取所有数据库的列表
- paw-app - Paw - 一种在请求之间移动时使所选请求/响应选项卡保持粘性的方法
- node.js - 登录后重定向到个人资料网址
- oauth-2.0 - LinkedIn API 未授权_范围_错误
- c - 在宏定义中转义结构字段
- python - 可以遍历具有不同名称工作表的 excel 文件并导入列表吗?
- angular - 将字符串 [] 数据发送到 api Angular 4
- unity3d - 为什么开放世界游戏不断地创建/销毁对象,但它仍然运行流畅?