问题标签 [xamarin.droid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
748 浏览

xamarin - Xamarin.Droid 包创建失败

我选择了 Build -> Archive 进行发布

我收到以下错误

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(2,2):错误:无法加载程序集'myapp,版本= 0.0.0.0,文化=中性,PublicKeyToken ='。也许它在 Mono for Android 配置文件中不存在?(myapp.Droid)

它以前工作过,但现在不再工作了

0 投票
0 回答
617 浏览

android - 带有位置按钮的 Xamarin Android 地图不关注用户

我有以下问题:

我在 Xamarin 表单中有一个主详细信息页面,在它上面我有一个由 Xamarin droid 中的自定义渲染器渲染的地图。地图很好用,在这里没有问题。我的代码 100% 等于:

当我使用这个时:

位置按钮出现,当我单击它时,相机会移动到我的位置,没关系,但是单击时此按钮不会变为蓝色(保持灰色),然后地图在更改位置时不会跟随用户。

这是我的代码:

有没有办法启用此功能或必须手动执行?

非常感谢大家!

0 投票
1 回答
894 浏览

android - Android连接中的Xamarin蓝牙失败

我正在尝试与另一个电话建立蓝牙连接。稍后,它将是一个带有 HC5 模块的板,但为了调试,我只是使用手机。

问题是,连接失败并引发 IO 异常:“读取失败,套接字可能关闭或超时,读取 ret:-1”

一个快速的谷歌搜索显示很多有这个问题。我可以看到它解决的唯一方法是使用 API 中不公开的方法

问题只是,它createRfcommSocket已被删除,getMethod 的结果将为空。

我的代码来自示例:https://github.com/xamarin/monodroid-samples/tree/master/BluetoothChat用于连接的是:

由于“原始黑客”不起作用,而且我还没有找到任何其他解决方案,我希望这里有人知道如何解决这个问题。

此致!

0 投票
1 回答
563 浏览

android - 为什么 Visual Studio 归档总是失败

我有 xamarin Native 项目,当我尝试在 Visual Studio 2017 中存档构建时,它失败并出现以下错误,但是当我尝试对 xamarin Studio 执行相同操作时,我没有遇到任何这些问题,我可以成功存档

如何解决问题和想法出了什么问题

更新:

这是一个 xamarin 原生项目

0 投票
1 回答
252 浏览

mongodb - 使用来自 Android Xamarin 的 CosmosDB 的延迟超时

我正在使用 Visual Studio for Mac 开发一个使用 Xamarin 的应用程序。我正在编写 C# 以同时针对 iOS 和 Android。

我们还在 Microsoft Azure 上使用 CosmosDB。

尝试让 Android 访问 CosmosDB 时出现问题。请注意,我使用的是用于 Cosmos 的 Mongo API。

我在Android中得到的错误信息如下:

使用 CompositeServerSelector{ Selectors = ReadPreferenceServerSelector{ ReadPreference = { Mode : Primary } }, LatencyLimitingServerSelector{ AllowedLatencyRange = 00:00:00.0150000 } } 选择服务器 30000 毫秒后发生超时。集群状态的客户端视图是 { ClusterId : "2", ConnectionMode : "ReplicaSet", Type : "ReplicaSet", State : "Disconnected", Servers : [{ ServerId: "{ ClusterId : 2, EndPoint : "Unspecified/aspire- cosmosdb.documents.azure.com:10255" }",端点:“未指定/aspire-cosmosdb.documents.azure.com:10255”,状态:“断开连接”,类型:“未知”}] }。

这是我的代码:

这在 xamarin.ios 上可以 100% 正常工作。每次都连接。该代码几乎是从 Azure 门户上的 CosmosDB 快速入门复制和粘贴的。我还采用了此代码并将其放入 C# 控制台应用程序中,它也可以工作。但是,相同的代码在 Android 上不起作用。为什么?

我在 Android 模拟器和真正的 Android 设备上都试过这个,两次都得到这个 30 秒的超时。我也在安卓上启用了互联网权限,但没有任何乐趣。请帮忙!

在撰写本文时,我已经通过 Nuget 引用了最新的软件包:

  • MongoDB.Driver -2.4.4
  • MongoDB.Driver.Core - 2.4.4
  • MongoDB.Bson - 2.4.4

注意:我已经混淆了 dsn 中的个人详细信息,但它应该向您显示它的粗略格式。实际的 dsn 是来自 Azure 门户的 cosmosdb dsn 连接字符串的直接复制和粘贴。

0 投票
1 回答
313 浏览

c# - 如何从 Xamarin.Droid 获取数据到 Xamarin.Forms 中的 ViewModel

我正在为一些研究制作一个应用程序。我正在尝试收听所有 wifi 网络,并将它们保存在数据库中。但我需要保存更多信息,然后只保存 wifi 详细信息。我将 Xamarin Forms 用于跨平台解决方案。我已经拥有的工作: - 与 ViewModel 绑定的视图。- ViewModel 使用我在视图中创建的条目的值按预期工作。- MySolution.Droid 项目具有访问 wifi 网络的代码。- 我有一个接收器正在使用信息触发 OnReceive。

我所做的可能不是最佳选择: - 因为在开始扫描后我正在等待(异步)OnReceive 触发。我选择通过 MessagingCenter 将数据发送到 ViewModel。- 我正在成功发送信息。并使用 MessagingCenter.Subscribe 在 ViewModel 中接收它

出了什么问题: - 我无法获取信息(进入我的 ViewModel),ViewModel 拥有的每个属性都是空的。- 我想要的只是获取 ViewModel 的信息。或者,如果我可以在 BeginInvokeOnMainThread 中获取绑定到视图的信息,那将可以正常工作。

我拥有的代码:

扫描视图模型.cs:

App.Droid.Wifi.cs:

对于那些没有阅读上面帖子的人(比如,tldr),我在 OnReceive 中收到了 ScanResult 列表,我需要它在 ViewModel 中,但我还需要其余的属性......

如果有更简单的方法可以做到这一点,我全神贯注!!!

提前致谢

0 投票
1 回答
91 浏览

visual-studio - 错误 System.InvalidCastException Forms(droid 构建然后崩溃,ios 很好)

我的应用程序运行良好。没有更新......现在这个错误是在机器人模拟器启动时引发的。

错误 System.InvalidCastException Forms(droid 构建然后崩溃,ios 很好)

公共部分类应用程序:global::Xamarin.Forms.Application {

尝试:清理,构建,退出,重新启动计算机,确保我的包都是相同的版本,并且在 main、droid 和 ios 上。

0 投票
1 回答
832 浏览

c# - System.MissingMethodException:找不到方法“System.Collections.Generic.Dictionary`2.GetValueOrDefault”

我正在开发Xamarin.droid应用程序,该应用程序运行良好,直到昨天。但是突然,当我尝试运行代码时,一旦项目开始在设备上运行,我就会在运行时遇到异常

System.MissingMethodException:找不到方法“System.Collections.Generic.Dictionary`2.GetValueOrDefault”。

我删除了所有代码更改,让它处于以前的工作状态。
清理并重建项目。
删除了 bin 和 obj 文件夹。
链接器属性已设置为“无”。
删除了不必要的包。
重新启动 Visual Studio。重新启动了系统。但还是没有用。

使用Visual Studio 企业版 15.5.7。

任何帮助表示赞赏...

编辑: 在我的情况下它得到了解决。我从 VS 运行应用程序,它抛出异常。然后我打开应用程序设置并清除缓存/数据。然后打开了应用程序。它按预期工作。然后从 VS 运行应用程序。然后它也可以在没有抛出异常的情况下工作。但不知道之前到底出了什么问题。

0 投票
0 回答
265 浏览

.net - 由于 Xamarin.Droid 堆栈跟踪不包括 AotID,单符号化失败

我正在尝试使用 mono-symbolicate 来表示由我们的应用程序的发布版本产生的堆栈跟踪。在 .csproj Release 构建设置中,DebugSymbols、Optimize、MonoSymbolArchive 均已设置为 True,DebugType 已设置为 Full。

在构建 Release 时,它​​似乎成功生成了 msym 文件夹MyApp.Droid 7-13-18 3.35 PM.apkarchive/mSYM/com.myco.myapp.apk.mSYM,其中包含许多以 GUID 命名的文件夹,一些包含单个 .msym 文件,一些包含 .dll 和 .pdb 文件。正如我在堆栈跟踪中看到的那样,似乎 MyApp.Droid 已获得 GUID 7216aaa9c1294991b8b2782974cfb879,并在同名目录中查找,我确实看到了 MyApp.Droid.dll 和 MyApp.Droid.pdb。浏览 msym 文件夹,我还发现了其他四个目录,每个目录都包含一个名为 MyApp.Droid.msym 的文件,我认为这意味着它出于某种原因将 msym 拆分为多个文件。

使用最小堆栈跟踪

(或任何更完整、更长的堆栈跟踪)并运行mono-symbolicate path/to/MyApp.Droid 7-13-18 3.35 PM.apkarchive/mSYM/com.myco.myapp.apk.mSYM myStackTrace.txt时,单符号脚本崩溃并出现以下错误:

阅读 mono-symbolicate 的源代码,它似乎因为试图从堆栈跟踪中解析一个 aotid 而失败,它似乎不包含。我的理解是,这个 aotid 将是最后一个尖括号内的第二部分,例如:

where4ed70d01848e11d51d01dac0cb2d805e匹配包含 MyApp.Droid.dll.msym 文件的文件夹名称之一。实际上,手动查找包含 MyApp.Droid.dll.msym 的文件夹并#foldername在尖括号中添加为后缀,经过几次尝试后,我找到了一个可以工作的文件夹(不会产生崩溃)。

为什么我没有在堆栈跟踪中获得 AOTID,或者我该如何解决这个问题?

0 投票
0 回答
304 浏览

visual-studio - Xamarin 编译问题中带有 Android 的 iText7

我有一个项目,它使用一个名为“iText”库的 NuGet 包。它依赖于 System.Runtime.Loader 包。当我尝试构建项目时,我得到了下面复制的异常,因为它尝试加载名称为“.”的占位符程序集。适用于 UWP 和 iOS。

Visual Studio 2017 和 Visual Studio for Mac 都会出现此问题。两者都具有最新版本,也具有最新的 Xamarin 框架版本。

此外,如果我从引用的文件夹中删除该文件,并从 netstandard1.5 文件夹中放置 System.Runtime.Loader.dll,并将链接设置为“无”,它工作正常。

例外:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(2,2):错误:加载程序集时出现异常:Java.Interop.Tools.Diagnostics.XamarinAndroidException:错误 XA0009:加载程序集时出错:/Users/xxxx/.nuget/packages/system.runtime.loader/4.3.0/lib/MonoAndroid10/。---> System.BadImageFormatException:可执行文件 (.exe) 或库 (.dll) 的格式无效。在 Mono.Cecil.PE.ImageReader.ReadImage () [0x000fc] 在 /Users/builder/data/lanes/6090/86d33f45/source/monodroid/external/xamarin-android/external/mono/external/cecil/Mono.Cecil .PE/ImageReader.cs:94 在 Mono.Cecil.PE.ImageReader.ReadImage (Mono.Disposable1[T] stream, System.String file_name) [0x0000a] in /Users/builder/data/lanes/6090/86d33f45/source/monodroid/external/xamarin-android/external/mono/external/cecil/Mono.Cecil.PE/ImageReader.cs:759 at Mono.Cecil.ModuleDefinition.ReadModule (Mono.Disposable1[T] 流,System.String 文件名,Mono.Cecil.ReaderParameters 参数)[0x00008] 在 /Users/builder/data/lanes/6090/86d33f45/source/monodroid/external/xamarin-android/external/mono/external /cecil/Mono.Cecil/ModuleDefinition.cs:1167 在 Mono.Cecil.ModuleDefinition.ReadModule(System.String 文件名,Mono.Cecil.ReaderParameters 参数)[0x00078] 在 /Users/builder/data/lanes/6090/86d33f45/源/monodroid/external/xamarin-android/external/mono/external/cecil/Mono.Cecil/ModuleDefinition.cs:1139 在 Mono.Cecil.AssemblyDefinition.ReadAssembly(System.String 文件名,Mono.Cecil.ReaderParameters 参数)[0x00001 ] 在 /Users/builder/data/lanes/6090/86d33f45/source/monodroid/external/xamarin-android/external/mono/external/cecil/Mono.Cecil/AssemblyDefinition.cs:134 在 Java.Interop.Tools.Cecil .DirectoryAssemblyResolver.ReadAssembly(系统。字符串文件)[0x00123] 在 /Users/builder/data/lanes/6090/86d33f45/source/monodroid/external/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop。 Tools.Cecil/DirectoryAssemblyResolver.cs:170 在 /Users/builder/data/lanes/6090/86d33f45/source 中的 Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Load(System.String 文件名,System.Boolean forceLoad)[0x00029] /monodroid/external/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:136 ---内部异常堆栈跟踪结束---在 /Users/builder/data/lanes/6090/ 中的 Java.Interop.Tools.Diagnostics.Diagnostic.Error(System.Int32 代码,System.Exception innerException,System.String 消息,System.Object[] args)[0x00000] 86d33f45/source/monodroid/external/xamarin-android/external/Java.Interop/src/Java.Interop。Tools.Diagnostics/Java.Interop.Tools.Diagnostics/Diagnostic.cs:165 在 Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Load (System.String fileName, System.Boolean forceLoad) [0x00034] 在 /Users/builder/data /lanes/6090/86d33f45/source/monodroid/external/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:138 在 Xamarin.Android .Tasks.ResolveAssemblies.ResolveRuntimeAssemblyForReferenceAssembly(NuGet.ProjectModel.LockFile lockFile,Java.Interop.Tools.Cecil.DirectoryAssemblyResolver 解析器,System.String assemblyPath)[0x00151] 在:0 在 Xamarin.Android.Tasks.ResolveAssemblies.Execute(Java.Interop .Tools.Cecil.DirectoryAssemblyResolver 解析器)[0x001ac] 在:0在 /Users/builder/data/lanes/6090/86d33f45/source/monodroid/external/xamarin-android/external/Java.Interop/src/Java.Interop 中加载(System.String 文件名,System.Boolean forceLoad)[0x00034] .Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:138 在 Xamarin.Android.Tasks.ResolveAssemblies.ResolveRuntimeAssemblyForReferenceAssembly (NuGet.ProjectModel.LockFile lockFile,Java.Interop.Tools.Cecil.DirectoryAssemblyResolver 解析器,System.String assemblyPath)[0x00151] 在:0 在 Xamarin.Android.Tasks.ResolveAssemblies.Execute(Java.Interop.Tools.Cecil.DirectoryAssemblyResolver 解析器)[0x001ac] 在:0在 /Users/builder/data/lanes/6090/86d33f45/source/monodroid/external/xamarin-android/external/Java.Interop/src/Java.Interop 中加载(System.String 文件名,System.Boolean forceLoad)[0x00034] .Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:138 在 Xamarin.Android.Tasks.ResolveAssemblies.ResolveRuntimeAssemblyForReferenceAssembly (NuGet.ProjectModel.LockFile lockFile,Java.Interop.Tools.Cecil.DirectoryAssemblyResolver 解析器,System.String assemblyPath)[0x00151] 在:0 在 Xamarin.Android.Tasks.ResolveAssemblies.Execute(Java.Interop.Tools.Cecil.DirectoryAssemblyResolver 解析器)[0x001ac] 在:0Cecil/DirectoryAssemblyResolver.cs:138 在 Xamarin.Android.Tasks.ResolveAssemblies.ResolveRuntimeAssemblyForReferenceAssembly (NuGet.ProjectModel.LockFile lockFile,Java.Interop.Tools.Cecil.DirectoryAssemblyResolver 解析器,System.String assemblyPath)[0x00151] 在 Xamarin:0。 Android.Tasks.ResolveAssemblies.Execute(Java.Interop.Tools.Cecil.DirectoryAssemblyResolver 解析器)[0x001ac] 在:0Cecil/DirectoryAssemblyResolver.cs:138 在 Xamarin.Android.Tasks.ResolveAssemblies.ResolveRuntimeAssemblyForReferenceAssembly (NuGet.ProjectModel.LockFile lockFile,Java.Interop.Tools.Cecil.DirectoryAssemblyResolver 解析器,System.String assemblyPath)[0x00151] 在 Xamarin:0。 Android.Tasks.ResolveAssemblies.Execute(Java.Interop.Tools.Cecil.DirectoryAssemblyResolver 解析器)[0x001ac] 在:0