如何在xamarin.forms pcl项目中配置地图?

时间:2015-12-03 08:01:55

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

我用xamarin.form PCL创建了一个项目。

我已添加.....

根据所有平台(Android,iOS,Window Phone)的要求添加了

xamarin.forms.maps 以及其他库和 NuGet包

我已在所有平台上提供了所有权限和配置。

我已成功在窗口手机中显示地图并运行程序,但我在android中有错误。

错误是

  

严重级代码说明项目文件行列   错误java.lang.OutOfMemoryError。考虑增加价值   $(JavaMaximumHeapSize)。 Java在执行时耗尽内存   ' java.exe -jar" C:\ Program Files   (86)\的Android \ Android的SDK \积聚工具\ 23.0.2 \ lib中\ dx.jar" --no严格   --dex --output = obj \ Debug \ android \ bin obj \ Debug \ android \ bin \ classes" C:\ Program Files(x86)\ Reference   大会\微软\框架\ MonoAndroid \ V6.0 \ mono.android.jar"   d:\项目\ SimplyFood \ SimplyFood \ SimplyFood.Droid \ OBJ \ Debug__library_projects __ \ FormsViewGroup \ library_project_imports \ formsviewgroup.jar   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ Android.Support.Design \ 23.0.1.3 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ Android.Support.v4 \ 23.0.1.3 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ Android.Support.v4 \ 23.0.1.3 \嵌入\库\ internal_impl-23.0.1.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ Android.Support.v7.AppCompat \ 23.0.1.3 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ Android.Support.v7.CardView \ 23.0.1.3 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ Android.Support.v7.MediaRouter \ 23.0.1.3 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ Android.Support.v7.MediaRouter \ 23.0.1.3 \嵌入\库\ internal_impl-23.0.1.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ Android.Support.v7.RecyclerView \ 23.0.1.3 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Ads \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Analytics \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.AppIndexing \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.AppInvite \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.AppState \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Base \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Cast \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Drive \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Fitness \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Games \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Gcm \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Identity \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Location \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Maps \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Nearby \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Panorama \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Plus \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.SafetyNet \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Vision \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Wallet \ 26.0.0 \嵌入\ classes.jar"   " C:\用户\ PB   DEV \应用程序数据\本地\ Xamarin \ GooglePlayServices.Wearable \ 26.0.0 \嵌入\ classes.jar"' SimplyFood.Droid

更新所有nuget软件包后,我得到以下错误...

  

解压缩失败。请下载   https://dl-ssl.google.com/android/repository/google_m2repository_r15.zip   并将其提取到   d:\项目\ TestApp \包\ Xamarin.GooglePlayServices.22.0.0.0 \ LIB \ MonoAndroid41 \ 22.0.0 \内容   目录。 TestApp.Droid

     

解压缩失败。请下载   https://dl-ssl.google.com/android/repository/google_m2repository_r15.zip   并将其提取到   d:\项目\ TestApp \包\ Xamarin.GooglePlayServices.22.0.0.0 \ LIB \ MonoAndroid41 \ 22.0.0 \内容   。目录

     

错误原因:   D:\ Project \ TestApp \ packages \ Xamarin.GooglePlayServices.22.0.0.0 \ lib \ MonoAndroid41 \ 22.0.0 \ 742021DEBBD30AFFB5B67FB39AB43D94.zip不是有效的zip文件TestApp.Droid

     

错误原因:   D:\ Project \ TestApp \ packages \ Xamarin.GooglePlayServices.22.0.0.0 \ lib \ MonoAndroid41 \ 22.0.0 \ 742021DEBBD30AFFB5B67FB39AB43D94.zip不是有效的zip文件TestApp.Droid

     

错误请安装软件包:' Google Play服务'在SDK中可用   安装程序。 Java库文件   d:\项目\ TestApp \包\ Xamarin.GooglePlayServices.22.0.0.0 \ LIB \ MonoAndroid41 \ 22.0.0 \嵌入式\ classes.jar   不存在。 TestApp.Droid

     

错误请安装软件包:' Google Play服务'在SDK中可用   安装程序。 Android资源目录   d:\项目\ TestApp \包\ Xamarin.GooglePlayServices.22.0.0.0 \ LIB \ MonoAndroid41 \ 22.0.0 \ embedded./   不存在。 TestApp.Droid

有没有其他方法可以使用xamarin在Android,iPhone和Window手机中轻松集成地图?

2 个答案:

答案 0 :(得分:9)

如果您使用的是Visual Studio;

右键点击您的Droid项目,转到Android Options标签,点击Advanced并将Java Max Heap Size设为1G

如果您使用的是Xamarin Studio,它应该是类似的东西。

它与所有正在加载的Java绑定有关,它会加载大量内存。使用此设置可以增加可用的默认内存。

你可以在一段时间之前在Xamarin的相关错误中阅读更多相关内容。 https://bugzilla.xamarin.com/show_bug.cgi?id=8137#c14

答案 1 :(得分:1)

有两种可能的原因。

  1. 您的模拟器内存​​非常低,您可以增加
  2. 您可能会在Android上显示一些大图片。 Android并不能很好地处理图片,请确保将它们缩小到正确的尺寸。
  3. 使用新的错误消息,转到包含问题的目录并删除所有zip文件和内容。 VS或Xamarin将再次自动下载它们。

    同时将您的编译API目标更新为API 23,但您可以将最小值保持在15。