android - monodroid .so 文件可以通过 .NET 代码进行管理吗?

标签 android xamarin xamarin.android native decompiler

Xamarin Monodroid(libmonodroid.solibmonosgen-2.0.so)生成的 .so 文件是托管代码还是 native 代码?来自 this SO post看来它们实际上是 .NET IL 二进制文件(不是 native 机器代码)。一个答案甚至表明 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 的核心库,这些当然基于您在应用程序中支持的 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 类型的机器代码并替换了 APP C# IL。

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

相关文章:

xamarin.android - 在 xamarin Android 应用程序中更改显示语言

android - 如何设置 EditText 自定义光标可绘制?

java - 安卓 Osmdroid : How to implement IArchiveFile interface for read pbf files using OSM binary library

java - Activity st.stxma.Activities.SelectDeviceActivity 已泄漏 IntentReceiver

ios - Xamarin:UICollection 图像重新排序问题

c# - 如何将我的页面与 C# View 子文件夹中的 xmls 连接

android - 使用搜索 View 过滤自定义列表项

c# - 依赖注入(inject)的 Xamarin iOS Controller 自定义继承问题

android - Xamarin - AppCompat 不支持当前主题功能

android - 尝试从 libart.so 调用 JNI_CreateJavaVM 失败