Xamarin.Forms.Maps在安卓7+;

Xamarin.Forms.Maps在安卓7+;,xamarin.forms,xamarin.forms.maps,Xamarin.forms,Xamarin.forms.maps,我是xamarin.forms的初学者,我已经用谷歌地图为我的小镇开发了一些免费的应用程序 该应用程序在所有VisualStudio(2019)的android模拟器上都能完美运行,甚至在我的旧手机(android 4.3)上也能运行 申请书的出版也很成功 然而,第一个在手机上安装该应用程序的用户(android 9)告诉我,该应用程序已经崩溃。刚刚在地图显示(尝试)时崩溃,没有任何错误消息。但应用程序的任何其他(没有映射)“ContentPage”都可以正常工作。只有当用户尝试使用映射控件打开

我是xamarin.forms的初学者,我已经用谷歌地图为我的小镇开发了一些免费的应用程序

该应用程序在所有VisualStudio(2019)的android模拟器上都能完美运行,甚至在我的旧手机(android 4.3)上也能运行

申请书的出版也很成功

然而,第一个在手机上安装该应用程序的用户(android 9)告诉我,该应用程序已经崩溃。刚刚在地图显示(尝试)时崩溃,没有任何错误消息。但应用程序的任何其他(没有映射)“ContentPage”都可以正常工作。只有当用户尝试使用映射控件打开ContentPage时,才会发生崩溃

因为我没有真正的安卓9设备(并且在所有VisualStudio的安卓模拟器上,应用程序都可以运行),所以我安装了Nox播放器:

并创建了两个可用的模拟器:android 5.1.1和android 7.1.2
结果: 该应用程序在安卓5上运行成功 并在安卓7上崩溃(与安卓7仿真器一起——仿真器程序刚刚关闭,没有任何错误消息)

嗯。我已经创建了一个最简单的测试xamarin表单映射应用程序-只需显示映射即可

MainPage.xaml:


同样的故事:适用于所有visual studio的android模拟器,适用于我的旧android 4.3设备,适用于nox播放器android 5,并在nox android 7上崩溃

然后,我试着从microsoft文档中编译一个示例。例如:

所有这些样品都放在这里:

我刚刚下载了解决方案,将我的“com.google.android.maps.v2.API_KEY”替换为AndroidManifest.xml并编译了它。没有更多的行动。
结果:完全相同的行为

更准确地说,最初我使用了Xamarin.Forms.GoogleMaps包:
结果相同

更多信息,请参见本页已编译的apk上的链接,其中包含示例:
结果:相同

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

更多信息:

AndroidManifest.xml:


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

  • 在新版android中,
    map
    可能需要某种权限?再次检查
  • 在创建APK时,您是否检查了所有体系结构? 在Android选项->高级->支持的架构->选择所有架构下。 更多信息请点击此处:

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

  • 在新版android中,
    map
    可能需要某种权限?再次检查
  • 在创建APK时,您是否检查了所有体系结构? 在Android选项->高级->支持的架构->选择所有架构下。 更多信息请点击此处:

  • 导致崩溃的异常是什么?你有没有试过捕捉它,或者在设备日志中查找与崩溃相关的信息?杰森,谢谢你的回答!不幸的是,我没有任何安卓7或9真正的设备。我只能在android 7 Nox播放器模拟器上重现此崩溃(在所有visual studio的android模拟器上,应用程序都可以正常工作)。因此,我无法捕获此崩溃/异常。当应用程序在android 7 nox emulator上崩溃时,emulator程序也崩溃并刚刚关闭,没有任何错误消息。请尝试安装一个崩溃报告工具,如appcenter.ms,以查看它是否可以捕获任何有用的信息。导致崩溃的异常是什么?你有没有试过捕捉它,或者在设备日志中查找与崩溃相关的信息?杰森,谢谢你的回答!不幸的是,我没有任何安卓7或9真正的设备。我只能在android 7 Nox播放器模拟器上重现此崩溃(在所有visual studio的android模拟器上,应用程序都可以正常工作)。因此,我无法捕获此崩溃/异常。当应用程序在android 7 nox emulator上崩溃时,emulator程序也崩溃并刚刚关闭,没有任何错误消息。请尝试安装一个崩溃报告工具,如appcenter.ms,看看它是否可以为youBhavya Joshi捕获任何有用的信息,谢谢您的回答!这个问题的困难恰恰在于没有任何错误消息。正如我所写的,android 7的Nox Player emulator(我唯一可以使用的设备,而不是真正的设备)崩溃了(与应用程序一起),并在没有任何错误消息的情况下安静地关闭了。是的,在我的问题发表之前,我还建议android的新版本需要一些额外的权限。我甚至用所有权限创建了我的简单应用程序的版本:)不幸的是,这个版本只在VS模拟器上工作——但在Nox模拟器上它崩溃了。要确认(或拒绝)此建议,需要迭代权限组合的不同变体。这是无聊的例行公事(没有肯定的结果),我希望有现成的答案。真的,为什么没有人感兴趣-为什么样本(已经编译为apk)在android 7+上不起作用?任何人都可以安装演示应用程序,并检查:谷歌地图演示应用程序上的直接链接:我已经在Android 9.0中安装了你的应用程序,它工作得很好。因此,一定只有某些设备存在问题。再一次,在xamarin中创建APK之前,您选择了所有的架构吗?Bhavya Joshi,谢谢您的回答!这个问题的困难恰恰在于没有任何错误消息。正如我所写的,android 7的Nox Player emulator(我唯一可以使用的设备,而不是真正的设备)崩溃了(与应用程序一起),并在没有任何错误消息的情况下安静地关闭了。是的,在我的问题发表之前,我还建议android的新版本需要一些额外的权限。我甚至创建了
    <ContentPage.Content>
        <map:Map />
    </ContentPage.Content>
    
    <?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>