monodroid .so文件可以管理.NET代码吗?

时间:2015-09-26 17:01:27

标签: android xamarin xamarin.android native decompiler

Xamarin Monodroid(libmonodroid.solibmonosgen-2.0.so)托管代码或本机代码生成的.so文件是什么?从this SO post看来它们实际上是.NET IL二进制文件(不是本机机器代码)。答案甚至表明Xamarin.Android二进制文件是JIT,可以在任何.NET反编译器中打开。但是,根据我的调查,这似乎与dotPeak或ILSpy无关。

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

1 个答案:

答案 0 :(得分:5)

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

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

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

  • 还包括包含Mono运行时的本机库,并为Android运行时(ART)和与MONO&lt; - ART。

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