热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

当使用第三方Xamarin组件时,Xamarinapp仅在调试模式下编译,而不是在发布模式下编译

如何解决《当使用第三方Xamarin组件时,Xamarinapp仅在调试模式下编译,而不是在发布模式下编译》经验,为你挑选了1个好方法。

我正在尝试将Localytics SDK(通过他们的Xamarin组件)集成到我的Xamarin Android应用程序中.它在Debug模式下编译,但是如果我切换到Release版本,那么它在编译时出错:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:错误:执行任务LinkAssemblies时出错:错误XA2006:无法解析对'Android.Gms.Gcm.Iid.InstanceIDListenerService的引用'(在程序集中定义'LocalyticsXamarin.Android,Version = 4.2.0.29760,Culture = neutral,PublicKeyToken = null'),范围为'Xamarin.GooglePlayServices.Gcm,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'.当范围与定义程序集不同时,通常意味着转发类型.(com.rpr.mobile.droid)

如果我只将Linker Behavior从Link SDK程序集切换到Do not link,那么它编译得很好,但这不是一个选项,因为那时apk太大了.如果我只切换回Link SDK程序集并将"LocalyticsXamarin.Android"添加到Ignore程序集列表中,它仍然会产生相同的编译错误.

此错误似乎意味着我的应用与Localytics Xamarin包装器之间的Google Play服务版本不匹配,但是他们向我发送了使用最新版本(42.1001.0)的包装器的更新版本,并且我已确认它与之匹配我们的应用.此外,他们自己的示例Android项目编译得很好.我已经梳理了他们的示例Android项目中的每个设置,并将其更改为与我的匹配,但仍然是他们编译而我的编译没有.

这是我的Android项目中的packages.config:



  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

以下是适用于示例Localytics项目的packages.config:



  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

要重现这个问题......

这是Localytics SDK Xamarin包装器的最新代码,它构建得很好.您将需要使用.xam文件并使用Xamarin-Component将其安装到Xamarin Studio.

这是我的Android项目代码的精简版.

我为我的项目的大小道歉,我删除了所有的代码和资源,但它仍然很大,因为组件和包,我不想删除,因为它们与问题相关.您将要打开RPR Mobile - Android.sln解决方案,更改为Release-Prod,然后尝试构建,您将看到错误.

有任何想法吗?



1> Jon Douglas..:

PATCHED版本附带的组件似乎未更新为包含您需要的引用,例如Xamarin.GooglePlayServices.Iid.

您将需要最有可能重新制作此组件或让供应商为您执行此操作.这里似乎有关于最终.dll添加到项目中的缓存问题.


推荐阅读
author-avatar
SHARK
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有