gpt4 book ai didi

android - monodroid .so 文件可以托管 .NET 代码吗?

转载 作者:太空狗 更新时间:2023-10-29 16:34:16 26 4
gpt4 key购买 nike

Xamarin Monodroid(libmonodroid.solibmonosgen-2.0.so)生成的.so 文件是托管代码还是 native 代码?来自 this SO post看起来它们实际上是 .NET IL 二进制文件(不是本地机器代码)。一个答案甚至建议 Xamarin.Android 二进制文件是 JIT 的,可以在任何 .NET 反编译器中打开。但是,根据我的调查,这似乎不适用于 dotPeak 或 ILSpy。

然而,this other post在另一个 SE 网站上似乎与此相矛盾。需要注意的是,它们泛指的是 Android NDK。那么,是否应该在 .NET 反编译器或反汇编器(例如 Hopper 和 IDA Pro(为您提供汇编代码))上打开 native 库?

最佳答案

这些文件,libmonodroid.so 和 libmonosgen-2.0.so 是 native 库,是 Mono 和 Xamarin.Android 的核心库,这些当然基于您在 APP 中支持的 ABI/ARCH 类型。

Xamarin.Android 应用程序包与普通 Android 包具有相同的结构和布局,但增加了以下内容:

  • 应用程序集(包含 IL)未压缩地存储在程序集文件夹中。

  • 包含 Mono 运行时的 native 库也包括在内,并为 Android 运行时 (ART) 提供并行运行时以及与 MONO <-> ART 对话的桥梁。

在 Xamarin.Android 5.1 及更高版本中,您可以选择像 Xamarin.iOS 那样对您的程序集进行 AOT,因为 Apple 要求在 iOS 上没有 JIT/动态生成的代码。 Android 的此选项在打包属性中定义,默认情况下为 false。因此,对于已经过 AOT 的程序集,已经生成了基于 ABI/ARCH 类型的机器代码并替换了应用程序 C# IL。

关于android - monodroid .so 文件可以托管 .NET 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32799663/

26 4 0
文章推荐: android - Android M 中弃用了什么?
文章推荐: html - 使用 margin minus 是正确的方法吗?
文章推荐: android - Systrace 输出错误
文章推荐: java - 在 android studio 和 SignalR 中接收 List