如果没有谷歌播放服务,Xamarin App将无法运行

时间:2016-04-02 23:48:16

标签: c# android .net google-maps xamarin

我是Xamarin Android的新手。我想在我的应用程序上显示一个基本的谷歌地图。我为谷歌地图api设置了API密钥等。但是,当我运行模拟器时会显示一条消息“如果没有Google Play服务,应用程序将无法运行”。

我已经使用android sdk manager安装了所有的软件包/ SDK,我正在尝试使用API​​级别22(Android 5.0 Lollipop)。

下面的代码用于初始化谷歌地图(从xamarin示例下载)。

任何人都可以告诉我这里缺少什么。

      using System;
      using Android.App;
      using Android.Content;
      using Android.Gms.Maps;
      using Android.Gms.Maps.Model;
      using Android.Runtime;
      using Android.Views;
      using Android.Widget;
      using Android.OS;

      namespace App2
      {
       [Activity(Label = "App2", MainLauncher = true, Icon = "@drawable/icon")]
      public class MainActivity : Activity, IOnMapReadyCallback
      {
        private GoogleMap _gMap;
        protected override void OnCreate(Bundle bundle)
        {
        base.OnCreate(bundle);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);
        GetMap();
    }

    private void GetMap()
    {

        if (_gMap == null)
        {
            FragmentManager.FindFragmentById<MapFragment>(Resource.Id.map).GetMapAsync(this);
        }
    }

    public void OnMapReady(GoogleMap map)
    {
        _gMap = map;
    }
  }
}

Main.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name="com.google.android.gms.maps.MapFragment" />

Android Mainfest

<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="App2.App2" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">
<uses-sdk android:minSdkVersion="16" />
<application android:label="App2" android:icon="@drawable/Icon">
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyCKBrF-_IrAQlkUyFG7GT4qgEJ7qOgyNRI" />
</application>
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<!-- We need to be able to download map tiles and access Google Play Services-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Allow the application to access Google web-based services. -->
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!-- Google Maps for Android v2 will cache map tiles on external storage -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Google Maps for Android v2 needs this permission so that it may check the connection state as it must download data -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- These are optional, but recommended. They will allow Maps to use the My Location provider. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Error All SDKs Installed

3 个答案:

答案 0 :(得分:3)

这似乎是,设备或本例中的模拟器没有安装Google Play服务。 Android应用中的软件包只提供对Google Play服务的访问权限,该服务通常安装在设备上。从这个意义上说,Google Play服务更像是一个共享运行时。

要解决此问题,您应该可以按照此guide在模拟器上安装Google Play服务。

我希望这有帮助!

答案 1 :(得分:2)

您似乎正在尝试在未安装Google Play服务的模拟器图像上运行该应用。

首先,我总是建议使用物理设备进行测试,但如果您需要测试不拥有设备的各种API级别,那么使用模拟器就足够了。

如果您使用的是Google AVD,那么您可以create a new virtual device已经包含Google Play服务。

如果你正在使用Xamarin Android Player,那么你可以使用@clb提到的this guide。但请注意,Xamarin Android Player是预览版软件,并未得到官方支持。如果这是模拟器,那么您在安装Google Play服务时遇到问题,那么您支持的最佳选择就是file a bug report。 (该指南当前显示日志的错误位置,现在通过(Windows)右键单击底栏(Mac)单击“帮助”菜单&gt;生成错误报告 - 日志将在您的桌面上压缩而获得

如果您仍然遇到问题,请告诉我您正在使用的模拟器,我会看看我是否可以提供更多帮助!

答案 2 :(得分:1)

正如其他人所说,问题似乎是您没有在模拟器上安装Google Play服务(也就是Google API)。这是我写的教程的链接,向您展示如何做到这一点。还有一个视频:https://birdsbits.wordpress.com/2016/05/26/testing-location-aware-apps-on-an-emulator