关于android:monodroid .so文件可以管理.NET代码吗?

Can monodroid .so files be managed .NET code?

.so文件是由xamarin monodroid(libmonodroid.solibmonosgen-2.0.so管理代码还是本机代码生成的?从本文看来,它们实际上是.NET IL二进制文件(不是本机代码)。一个答案甚至建议Xamarin.android二进制文件是实时的,可以在任何.NET解压程序中打开。然而,根据我的调查,这似乎不适用于dotpeak或ilspy。

然而,另一个SE站点上的这篇文章似乎与此相矛盾。应该注意的是,它们通常指的是Android NDK。那么,本机库应该在.NET解压器还是像Hopper和IDA Pro这样的分解器上打开(提供汇编代码)?


这些文件libmonodroid.so和libmonosgen-2.0.so是本地库,是mono和xamarin的核心lib。Android,这些当然是基于应用程序中支持的abi/arch类型。

xamarin.android应用程序包与普通android包具有相同的结构和布局,并添加了以下内容:

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

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

在xamarin.android 5.1及更高版本中,您可以选择AOT您的程序集,如xamarin.ios,这通常是由于苹果公司要求iOS上没有JIT/动态生成的代码。Android的此选项在打包属性中定义,默认情况下为false。因此,对于已经过AOT开发的程序集,已经生成了基于ABI/ARCH类型的机器代码,并替换了应用程序C IL。