MONO 说谈

时间:2024-01-03 09:29:38
 Xamarin android现在到底依赖Dalvik不?
是部分依赖的

驱动

编译后的IL经过CLR并不能直接成为机器码,而是要借助Dalvik才能成为机器码吗?

而是关于Android的驱动部分主要是传感器的部分

你看ANDROID SDK FRAMEWORK的结构图就知道的了

同好奇

那个图说明说明

那个图说明什么?

不过如果Xamarin支持NDK,也许是不依赖Dalvik的

理论上CLR的定义和Dalvik应该是一样的  
按照官方的截图  IL+JIT貌似已经完成了到本地机器码的任务

MONO 说谈
MONO 说谈

这个图就非常清晰地说明了相关的问题

图不一定非常精确的

还是要看文档说明

在iOS平台,Xamarin 使用AOT编译,在Android平台,则使用JIT编译,将C#程序代码直接编译为ARM CPU的机器码,以得到最佳效能。

官方的原文

王爷的图  原图看过不少遍 
加的那几个东西 有些深奥  表示看不懂

这个是因为你可能不熟悉LINUX结构导致的

这个确实不熟悉

按描述应该就是直接绕开JIT了

从图中非常清楚地表达了一个信息,就是驱动是属于LINUX内核的部分

这个不是SDK能处理的

举一个非常简单的例子可以说明

你下载百度地图的JAR包

里面就包括了一个SO的程序包

so包其实就是Linux内核的部分了

也就是图中红色的部分

SDK是通过JNI方式来调用的

同样的道理MONO,DELPHI XE5都是采用类似的方式

也就是说只要我不直接操作Linux内核  而是上层调用  就不会有这个问题?

需不需要依赖Dalvik?

我就写个hello Word

我猜测不需要哦

是否需要视乎你的应用是否涉及传感器的部分

我使用了传感器  但是我是通过SDK调用的

而且加入真是这样 所有硬件都应该有这个问题  不仅仅是传感器

SDK就是JNI调用SO

所提及的传感器就是指硬件

我理一理  有些乱

因为MONO是完全按SDK的方式封装的

所以也是基于这样的模式处理相关接口

这样处理的方式可以保证相关版本可以在兼容性上保持一致

我理解是编译的时候借用了JIT,但编译后的结果就未必了

因为原则上MONO可以完全另外搞一套接口技术,但是这样会容易导致当Android SDK版本升级的时候,就容易导致兼容性的问题出现了

毕竟MONO并不被手机制造商所采用

但有些文章说的是IL再通过JIT翻译成本地汇编的

那些都不是恰当(非主流)的做法

java--->Dalvik--->JNI--->硬件
C#---->CLR---->空缺--->硬件
是由于这个空缺引起的吗?

因为ARM编译器其实可以有很多实现的方式

C#->IL->JIT

应该没有CLR

是在JIT里面跑的

c#其实还有部分接口是采用JNI方式的

好像XAMARIN有相关文档提及这方面的内容

好的  谢啦  
不过看过好几篇文章  都说JIT+IL直接就是机器码

如果不涉及驱动的,这个确实是这样的情况

JIT不就是Dalvik么

JIT和DALVIK没有什么关系

应该说Dalvik的核心就是JIT

嗯  但是按照王爷说的  是缺少JNI部分

因为MONO需要自己的运行时

那部分不知道和NDK又是啥关系了

只是在涉及驱动的时候会依赖DALVIK

那应该是依赖JNI啊

xamarin为什么不把这块给做了啊?

如果只是兼容性问题  现在还不是要跟着android一起升级
MONO 说谈
这个是DELPHI XE5实现的方式

MONO的也是类似的方式

因为这里应该还有几个问题我想应该清楚的

一个就是APK启动的时候,必须依赖于JAVA的环境

还有一个就是硬件驱动的接口层面

否则如果是纯LINUX的原生(ELF文件)的话,这样未必可以在Android环境下可以自动安装。。。

也就是于操作系统的接口需要解决

很多人并不了解这些环节

Xamarin Androi,是不是鸡肋啊?我指的是效率不行。

是不是鸡肋,这个要具体分析才行

你相信Xamarin能够在Android占有一席之地?

而且比重很大?
这个看Xamarin的性能上可以走多远

Xamarin没有摆脱Java,我觉得这个是它的软肋。

如果不摆脱,我觉得Xamarin发展不会很顺畅
【1】北京-志松
2014/4/13 19:51:48

我觉得IL应该直接面对硬件,而不是Java。

IL无法直接面对硬件

如果不摆脱,其性能是大打折扣的。

因为硬件千差万别

IL面对的只是虚拟机环境
【1】北京-志松
2014/4/13 19:52:42

Java是怎么做到的呢?

IL的初始IDEA也是从Java来的啊
【6】广州-巴依王爷
2014/4/13 19:53:06

JAVA的虚拟机技术已经很成熟了

IL无法直接面对硬件

我觉得IL也有可能直接面对硬件,就像Java可以一样。

其实JAVA也不是直接面对硬件,它也是面对虚拟机环境

只是太难,没有大牛提纲。微软对Xamarin的态度也不是很明朗,说白了,暂时他们也不想投大钱。

IL也应该是直接面对的所谓的《虚拟机环境》

应该是google制定一套硬件接口  硬件厂商必须遵守这个接口开发硬件

我也很介入Xamarin,但是一想到IL是依托Java,我还不如直接用Java得了

这个也是一个不错的选择

看你看重什么   优缺点都有啦

如果没有大牛提纲,Xamarin也许真的就是微软的试验品。

代码的复用性  java就比不了