【问题标题】:OkHttp binding library for Xamarin Android throwing errorXamarin Android 的 OkHttp 绑定库抛出错误
【发布时间】:2013-10-30 23:36:32
【问题描述】:

我正在尝试在 Xamarin Android 应用程序中使用 OkHttp-Xamarin 库。每当我尝试创建新的 OkHttpNetworkHandler 时,都会出现以下异常。

行:

var handler = new OkHttpNetworkHandler();

投掷:

[] Missing method Android.Runtime.JNIEnv::AllocObject(Type) in assembly Mono.Android.dll, referenced in assembly /data/data/com.my.app/files/.__override__/OkHttp.dll
[MonoDroid] UNHANDLED EXCEPTION: System.MissingMethodException: Method not found: 'Android.Runtime.JNIEnv.AllocObject'.
[MonoDroid] at ModernHttpClient.OkHttpNetworkHandler..ctor () <IL 0x00001, 0x00057>

我正在使用来自ModernHttpClient 0.9 版的预构建二进制文件。我的最低 Android 版本设置为 2.3,目标设置为 4.2。我正在使用 Xamarin Studio 4.0.13 和 Mono 3.2.3。

【问题讨论】:

  • 现在遇到完全相同的问题,无法解决:(

标签: c# xamarin.android xamarin


【解决方案1】:

所以这看起来像是对绑定代码的第一次调用。

这里可能会发生一些事情:

  • 确保您使用EmbeddedJar 而不是InputJar 作为jar 文件的构建操作。否则,您必须将 jar 包含在您的主 Android 应用程序中。
  • 确保您的主应用程序具有对绑定 DLL 的引用,如果只有依赖项目具有该引用,则会导致问题。

如果这些都不能解决您的问题,请告诉我,我认为 Paul Betts 对此库有一个有效的绑定。

【讨论】:

  • 我正在使用 Paul Betts 绑定库,如上所述,我正在使用他的 ModernHttpClient 0.9 版本。我设置了一个测试项目,以防我正在处理的项目出现问题:github.com/jdehlin/OkHttpTest。裸露的骨骼,单一的项目解决方案,我仍然遇到异常。除了上述信息之外,我还在 OSX 上运行 Xamarin Studio(独立)。
  • 嗯,是的,我遇到了同样的问题。我注意到你的项目有&lt;TargetFrameworkVersion&gt;v4.2&lt;/TargetFrameworkVersion&gt;,而 Paul 使用的是 2.3。我尝试更改它,但是您的应用程序将不再部署。您的应用是否使用 Android 4.x 功能?
  • 该测试应用不应该使用任何高级功能,因此不确定为什么它不会部署。我也不相信我正在从事的实际项目使用的是 4.x 中的任何东西。当我回到家时,我会尝试弄乱目标版本。谢谢。
  • 搞砸了 TargetFrameworkVersion 并让它部署(通过关闭快速部署)。虽然仍然得到同样的错误。还尝试使用最新版本的 ModernHttpClient dll (1.0.0),没有任何区别。
【解决方案2】:

并没有真正回答为什么抛出异常,但在 Paul Betts 的建议下,我切换到了 Alpha 通道,现在一切正常。

【讨论】:

  • 我敢打赌,如果你从源代码重建他的库,你可以让它稳定运行。很多时候 Xamarin 会破坏版本之间的兼容性(至少对于 Android),除非您重新构建。
  • 大家好,非常感谢这些帖子。在“超过我愿意承认”的时间之后,我已经让 ModernHttpClient 工作了......必须在此过程中了解 Make 和 Maven。通过“潜入并发现错误”来学习系统,没有比这更好的方法了!该线程提供了急需的路标。
猜你喜欢
  • 2020-09-21
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 2017-12-09
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
相关资源
最近更新 更多