我正在尝试使用< code>Xamarin。AccountStore来保留用户的登录凭据,这样他们就不必在每次使用应用程序时都键入凭据。
保存凭据看起来像这样:
Account account = new Account(...);
AccountStore store = AccountStore.Create();
store.Save(account, appName);
在模拟VS中的应用程序时,这与我的预期完全一样。当通过Xamarin Live在实际手机上运行时,保存
方法会为Android库中看起来缺少的方法抛出异常。
异常消息:
类型“Java”上的构造函数。找不到security . KeyStore SecretKeyEntry。
堆栈跟踪:
at System.RuntimeType.CreateInstanceImpl (System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes, System.Threading.StackCrawlMark& stackMark) [0x00213] in <896ad1d315ca4ba7b117efb8dacaedcf>:0
at System.Activator.CreateInstance (System.Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes) [0x000ba] in <896ad1d315ca4ba7b117efb8dacaedcf>:0
at System.Activator.CreateInstance (System.Type type, System.Object[] args) [0x00000] in <896ad1d315ca4ba7b117efb8dacaedcf>:0
at NInterpret.Interpreter.newobj (System.Collections.Generic.Dictionary`2[TKey,TValue] gargs, Mono.Cecil.MethodReference m, System.Object[] createInstanceArgs) [0x00305] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
at NInterpret.Interpreter.interpretBlock (System.Object[] args, System.Object[] locals, Mono.Cecil.Cil.Instruction initialInstruction, Microsoft.FSharp.Collections.FSharpSet`1[T] inTries, Microsoft.FSharp.Core.FSharpOption`1[T] lastException) [0x03d5b] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
at NInterpret.Interpreter.interpret (System.Object[] args) [0x00099] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
at NInterpret.Interpreter.callAMethod (NInterpret.AMethod m, NInterpret.AType[] ptypes, NInterpret.AType[] genericMethodArgs, System.Collections.Generic.Dictionary`2[TKey,TValue] genericArgsIndex, System.Object[] args, System.Collections.Generic.List`1[T] byRefArgs, Microsoft.FSharp.Core.FSharpOption`1[T] byRefTarget, System.Object target, System.Boolean virtualCall) [0x00184] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
at NInterpret.Interpreter.callMethodReference (System.Collections.Generic.Dictionary`2[TKey,TValue] gargs, Mono.Cecil.MethodReference ms, System.Boolean virtualCall) [0x00384] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
at NInterpret.Interpreter.interpretBlock (System.Object[] args, System.Object[] locals, Mono.Cecil.Cil.Instruction initialInstruction, Microsoft.FSharp.Collections.FSharpSet`1[T] inTries, Microsoft.FSharp.Core.FSharpOption`1[T] lastException) [0x03c6e] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
at NInterpret.Interpreter.interpret (System.Object[] args) [0x00099] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
at NInterpret.Interpreter.callAMethod (NInterpret.AMethod m, NInterpret.AType[] ptypes, NInterpret.AType[] genericMethodArgs, System.Collections.Generic.Dictionary`2[TKey,TValue] genericArgsIndex, System.Object[] args, System.Collections.Generic.List`1[T] byRefArgs, Microsoft.FSharp.Core.FSharpOption`1[T] byRefTarget, System.Object target, System.Boolean virtualCall) [0x00184] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
at NInterpret.Interpreter.callMethodReference (System.Collections.Generic.Dictionary`2[TKey,TValue] gargs, Mono.Cecil.MethodReference ms, System.Boolean virtualCall) [0x00384] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
at NInterpret.Interpreter.interpretBlock (System.Object[] args, System.Object[] locals, Mono.Cecil.Cil.Instruction initialInstruction, Microsoft.FSharp.Collections.FSharpSet`1[T] inTries, Microsoft.FSharp.Core.FSharpOption`1[T] lastException) [0x03c6e] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
at NInterpret.Interpreter.interpretBlock (System.Object[] args, System.Object[] locals, Mono.Cecil.Cil.Instruction initialInstruction, Microsoft.FSharp.Collections.FSharpSet`1[T] inTries, Microsoft.FSharp.Core.FSharpOption`1[T] lastException) [0x0013c] in <5a7d38ec7eef0f2aa7450383ec387d5a>:0
我在几台Android设备上测试过,结果都是一样的。模拟器运行的是Android 7.1,手机运行的是6.*和7.1,所以这似乎不是Android版本的问题。
我也试过清空我的< code>bin和< code>obj文件夹,重新安装相关的Nuget包,重启VS和我的PC等等。这些都无济于事。
是什么导致了模拟设备和真实设备之间的这些行为差异?
潜在不相关的:
有一次,我将Save
表达式包装在try
/catch
中,并返回bool
以指示保存是否成功。在模拟器中,成功保存后,这将返回<code>true</code>。在“真实”设备上,catch
语句被触发(应该返回false
),但返回到调用代码后,返回的值不是false
,而是(null)
。这是令人沮丧的,原因有很多(一个不可为null的<code>bool</code>是如何被赋值为true/false以外的值的?如果我不能信任函数的返回类型,我怎么能放心地做任何事情?等等)。我不知道这种行为是否与当前的问题有关,但为了完整起见,我将其包括在这里。
根据SushiHangover的上述说明,事实证明Xamarin Live并不适合实际运行应用程序,只应该用于查看布局等任务。
在使用Xamarin Live时缺少各种逻辑组件可能也是上面提到的其他奇怪行为的根本原因。
使用模拟器或USB连接到物理手机似乎都可以按预期工作。
我不太清楚为什么会发生这种情况。我一直在做一些研究,但情况太模糊了,我甚至很难找到解决办法。 我使用Android Studio创建了一个应用程序,并一直在一个虚拟仿真器上运行,其中< code>Toast功能使用这两行简单的代码运行良好 但当我在手机上运行这个应用程序时,它一直死机。我有Galaxy Grand Prime,甚至不确定它是否重要。
我使用以下方法计算行数 和列中的条目 这两种方法在模拟器上都可以正常工作,但在真实设备上会出错...... 知道哪里出问题了吗?谢谢你。 我得到一个错误日志:-
这个小部件在模拟器4.1.2上工作得很好,当安装在真正的设备上时,它甚至不会显示在小部件列表上,就像安装了一样,但我不能让它正常工作。 下面是manifest.xml 和小部件提供程序
我是android新手,我能够在kotlin中为我的应用程序设置firebase。如果我在Nexus 5X API 27 emulator中运行该应用程序,我就能够获取数据库,但当我在实际设备三星S5(Google play Services V 12.5.29,android V 5.0)中运行该应用程序时,我无法获得addValueEventListener回调。 Gradle文件: 我知道这
我正在开发一个颤抖应用程序,其中包括谷歌登录火库。Google登录在模拟器上可以正常工作,但是当我导出签名捆绑包并在物理设备上进行测试时。它不起作用。我需要在 gradle 文件中添加任何内容吗?有人可以指导我吗?
我试图从我的localhost获取数据并将其打印在我的flutter应用程序中,问题是它在Android模拟器中完美工作,但它在我的物理设备中不工作,你能告诉我该怎么做才能使它在我的物理设备中工作?