手机打开exe文件 安卓运行exe文件

9158APP 0

手机打开exe文件安卓运行exe文件前言鸿蒙2.0发布后,近期网络上有各种评论。本来我不打算发表长篇大论,但我不想让很多无知的人来批评一家背负重担的公司,所以就有了这篇文章。我了解的不多,如有错误请指出。 ——也许你认为我是海军(也

前言

近期,鸿蒙2.0发布后,网络上有各种评论。本来我不打算发表长篇大论,但我不想让很多无知的人批评一家背负重担的公司,所以写了这篇文章。我了解的不多,如有错误请指出。 —— 也许你认为我是海军(或海狗),但我是一个正派的人,不怕诽谤。我是不是海军,你可以自己判断。

从方舟编译器开始

鸿蒙真的是安卓?

鸿蒙真的是安卓?

首先我觉得有必要先讲一下什么是编译器。其实编译器简单来说就是CPU的翻译器,将程序员编写的代码翻译成机器可以识别并按照既定规则运行的指令。目前比较出名的就是GCC编译器(准确的说是编译器的集合)。无论我们用C语言还是Java编写代码,GCC都可以将其翻译成电脑、手机等设备可以识别的指令。

接下来,我们来讨论谁在开发和维护编译器。既然编译器是一个CPU翻译器,那么它自然是由最了解CPU的人来开发和维护的。这群人会根据CPU架构和指令集等条件继续开发和维护编译器。所以可以说每种类型的CPU都需要一个唯一对应的编译器。毕竟编译器是最了解CPU的。

然后我们看看CPU和编译器之间的协作。假设一个CPU有一个加法器(用于加法)和一个乘法器(用于乘法),程序员写了一段代码“x=13”和一段代码“y=1+1+1”代码。这次,编译器会将这两段代码翻译成本CPU指令集中的一条乘法指令和一条加法指令,运行这段代码时,乘法指令和加法指令分别调用乘法运算符和加法运算符,从而实现了x和y评价的计算。

接下来我们说说方舟编译器。很多人好奇为什么方舟编译器的出现会引起如此轰动。事实上,这意味着华为的实力和野心。为什么这么说?因为一般厂家很少有在买了别人的CPU或者CPU架构后愿意去做编译器的。首先,编译器的开发是极其复杂和困难的(需要很多次才能成为最了解CPU的人),而且原厂商已经自带了自己的编译器,而且即使构建好了,它可能不如原来的那么好用,所以这几乎是一项吃力不讨好的任务。而华为已经做到了,这说明华为正在努力(或者已经)成为最懂CPU的人。这是实力的体现。同时,这也意味着华为正在积累芯片自研经验,以摆脱ARM的控制,因为一个能做编译器的人很大程度上意味着有自研架构的能力。毕竟CPU架构和编译器是成对出现的。

所以,很多人看到ARM停止给华为授权之后,有人幸灾乐祸,有人担心,但我觉得这种担心是不必要的,这种幸灾乐祸是没有用的。从ARM授权的各个厂商(高通、三星、华为、联发科等)来看,如果有哪个产品对架构做出了神奇的改变,一般都意味着性能的激增,比如三星的Mongoose和高通的kryo。它们是ARM CPU吗?是的,但是他们是增强版,对ARM有自己的理解,所以性能比公版MTK高很多。对ARM架构进行了优化并添加了新功能。例如,假设公版架构的乘法器采用级联加法器(将很多加法器串在一起是不合适的),这样效率非常低,并且在运行“13”指令时会产生大量热量。为了解决这个问题,厂家将公版乘法器优化为乘法器。这时候跑“13”就会快很多。再比如,假设公版根本没有乘法器,那么编译器会在运行时将其转换成一行“1+1+1”的指令。此时会调用3次加法器进行计算。为了解决这个问题,厂家添加了一个乘法器来解决这个问题,但是这样做就需要修改编译器,让编译器知道这个CPU可以调用乘法指令。编译“13”时,不需要调用3次加法,只需调用1次乘法。这样一来就已经脱离了魔法改革的范围,走向了自研的方向。典型代表就是苹果的CPU,它拥有很多ARM所没有的功能和指令。与IOS结合起来简直就是绝配。

因此,方舟编译器实际上预示着华为未来将走自研架构之路。是否获得ARM的持续授权已经不再是一个重要的问题,因为走上自研之路必然会与ARM渐行渐远。当然,这条路一开始一定很艰难。毕竟高通、三星这种规模的公司已经放弃自研,回归公版架构了。但苹果的成功也非常具有诱惑力。只要我们坚持走自研之路,站稳脚跟,未来一定会收获丰厚的回报。

任何编译器制造商都有开发自己的CPU的雄心。方舟编译器的出现,必然表明了华为自主研发CPU的决心。

系统和UI的区别

鸿蒙真的是安卓?

鸿蒙真的是安卓?

大家可能对操作系统有一个大概的印象,就是一个集成了各种功能和软件的软件(软件之母还是软件,有点拗口)。 UI官方的解释是“软件的人机交互、操作逻辑、界面美观的整体设计”,但我理解UI是为了呈现系统功能。早期的系统没有UI,全是命令行(这就是为什么很多人有黑客满屏代码的印象)。后来引入了UI来直观地呈现功能(所谓交互、逻辑、美化)。软件的运行逻辑、任务调度等都是由系统管理的,UI只需要根据系统的运行呈现不同的效果即可。因此,系统和UI的区别,在我看来是:系统——有功能和软件,但不需要界面; UI——要想有良好的表现,必须有系统支持。当然,现在很多UI都可以模糊与系统的界限,比如增加一些新的功能比如天气、物流等。但是你可以看到,天气、物流也是软件,包括UI本身。如果你不相信,你可以ROOT你的手机并删除UI。很可能会显示原生UI,也可能直接变成shell(命令行模式),但系统没有挂起。所以目前所谓的EMUI、MIUI、氢氧系统其实都只是UI,只是我们习惯称其为系统。

系统工作流程

要了解鸿蒙是不是Android,我们先来说说一个简单的软硬件系统的架构。从下到上:硬件层、驱动层、系统层、应用层。这些层有什么用?我们以蓝牙为例:

1、硬件层提供蓝牙的硬件电路,否则硬件将不支持蓝牙功能。

2、有了蓝牙芯片,就需要一个能够提供对蓝牙芯片的各种操作的功能,比如开关操作、扫描操作、选择操作、连接操作、发送接收操作等,这些操作都是直接和硬件进行通讯的,通过对蓝牙芯片的寄存器和电路进行操作来工作,而提供这些操作的就是驱动层。

3、驱动层向系统层提供各种蓝牙操作。经系统重新封装后,可以向应用层提供蓝牙操作功能。系统之所以需要封装,是因为驱动层提供的操作大部分都是原子操作(不可分割)和硬件操作,过于细致和繁琐。这对于不熟悉蓝牙的程序员来说就有点粗心了。蓝牙功能会出问题是因为不知道蓝牙正确合理的操作流程。同时整个系统不仅服务于蓝牙功能,还为WiFi、屏幕等其他功能提供服务。因此,系统需要对蓝牙驱动程序进行适当的封装,使应用程序对蓝牙的操作与硬件分离。系统层按照蓝牙的合理顺序,集成了打开蓝牙、扫描蓝牙、连接蓝牙的操作。例如,系统将驱动层提供的打开蓝牙和扫描这两个操作封装到系统的蓝牙打开操作中,这样在使用时,就可以按照正确的顺序在打开蓝牙的同时进行扫描操作;将选择操作和连接操作封装成系统连接操作,大大简化了应用层使用蓝牙的流程。当然,除此之外,系统还给它提供了调度功能,这样你在使用蓝牙的时候,依然可以使用wifi。

4、最后说一下我们一般所说的应用层。我们一般接触到的各种软件(、今日头条等)其实都是顶级应用。这些顶层通过调用、组合系统提供的各种接口(API)来实现我们需要的功能。例如,共享单车软件想要连接蓝牙,那么该软件只需要调用上一步提到的蓝牙开放接口和蓝牙连接接口,并传入正确的参数即可连接到自行车的蓝牙进行通信。这时应用层就可以完全忽略底层了。蓝牙的操作逻辑是先扫描还是先连接,因为底层已经处理好了,所以不用APP操心,直接使用即可。

总结一下整机APP蓝牙操作流程:首先,用户点击按钮开启蓝牙。此时APP会调用系统提供的开放蓝牙接口;当调用系统打开蓝牙接口时,系统会按下正确的按钮。该序列首先调用驱动程序提供的打开蓝牙操作,然后调用扫描操作;而驱动层拿到打开和扫描操作的系统调用后,就会控制蓝牙寄存器等硬件相关的东西来真正打开和扫描蓝牙设备。扫描完成后,将获得的信息通过相反的路径逐层向上传输,最终可以将扫描到的蓝牙设备显示在App上供我们选择。

鸿蒙是安卓吗?

鸿蒙真的是安卓?

鸿蒙真的是安卓?

经过这么长时间的准备,我们终于进入正题了。很多人认为能够运行apk程序(Android程序)就意味着Android,或者说只有Android系统才能运行apk程序。这种理解是绝对错误的。

为什么?从上述系统工作流程来看,某些程序能否运行理论上与系统无关,而是与系统是否提供相关接口(API)有关。如果Windows系统提供了Android应用程序所需的接口,那么Windows就可以运行Android程序。同理,如果Android手机提供了Windows应用程序的接口,那么Android手机也可以运行exe文件。再比如,旧的Android系统可能无法正常运行新版本的Android应用程序(不兼容)。原因实际上是旧系统缺乏新应用程序所需的接口。以及如何提供APP所需的接口?一般有两种方法:

1.系统直接原生支持Android界面。这种方法的优点是运行速度更快。缺点也很明显,工作量巨大,需要对系统进行大幅度修改,甚至需要从头开始构建一个系统,比如Android 5之后的系统。

2、利用中间层技术(或虚拟机或支撑环境),虽然系统层面没有Android所需的各种接口,但是通过中间层技术可以虚拟出一个适合Android运行的环境(有Android接口的环境)。这种方法的优点是工作量不大,可以使用其他操作系统。只需要在系统上提供Android运行环境即可。这种沙箱方式还有一个好处,就是即使Android虚拟机崩溃了,系统也不会有任何影响。 Android 5之前的系统是通过在Linux环境下建立Android虚拟机来实现的,所以当时的Android非常滞后,因为虚拟机总是不如原生的高效。

无论使用哪种方法,显然Android应用程序都可以运行。目前,阿里云OS、Firefox OS以及谷歌正在开发的取代Android的Fuchsia系统均采用原生支持。这些可以直接支持Android,但它们不是Android系统。为什么现实中可以在Windows上使用呢? Android模拟器运行Android应用程序,而Linux可以通过wine运行Windows程序,甚至有些Windows程序是由Android专家运行的?这实际上是第二个中间层(或虚拟机)技术。

所以大家需要清楚地明白,“兼容Android应用程序”不等于“Android系统”,“Android系统”也不等于“可以运行Android应用程序”(很拗口,不是吗?) 。因为道路有千千万万条,你永远分不清它们,也永远无法定义所谓的系统是什么。毕竟Windows可以运行Android,Linux也可以运行Android,鸿蒙也可以运行Android。那么Windows、Linux、鸿蒙都是Android系统吗?这显然是很多人无法接受的。不过,大家都非常愿意接受这样的观点:兼容的Android应用程序就是Android系统。其实,造成这种情况的根本原因很可能是没有多少人使用Windows来运行Android,而且很多人并不知道早期的Android只是一个Linux虚拟机。在这个层面上,在伪装层之下,面对消费者的是Android应用程序,因此很多人认为这是理所当然的。

所以,我想大家都已经知道鸿蒙是不是安卓了,具体是如何支持安卓的我也不清楚。但同样,“与Android 兼容”与“是Android”并不相同。鸿蒙选择兼容Android的很大原因是Android生态系统太大,几乎无法撼动。如果不兼容Android,就等于放弃整个开发世界,开始一个新的世界。强大的微软WP也失败了,可想而知,兼容Android是生存的必然选择。就连谷歌也没有勇气在Fuchsia 中放弃Android。 —— 因为放弃兼容Android就意味着放弃60%的手机市场(另外40%在苹果手里),这是任何人都承担不起的。鸿蒙和Fuchsia能做的就是不断迭代对Android的兼容性,引导开发者和用户迁移到新系统并逐渐放弃Android。

鸿蒙开发环境争议

这次发布会还有一个争议点,那就是鸿蒙的开发环境(或者说IDE)与其他环境过于相似(有人说是vscode,有人说是android studio)。事实上,就程序开发而言,IDE 看起来像谁,甚至是谁并不重要。可以说,在所有与鸿蒙相关的东西中,IDE不应该成为弱点。因为IDE简单来说就是一个类似于记事本的代码编辑工具,但是它集成了一些方便的功能,比如错误警告、编译按钮等,这些功能插件可以大大提高程序员的工作效率。

有些人可能会奇怪我为什么说IDE是最不重要的并且谈论如何使用代码来编写软件。程序员首先编写代码,然后使用编译器(通常包含在交叉编译工具链中)将代码编译成应用程序。可以发现,代码开发不需要特定的IDE,甚至用记事本就可以编写代码,而编译则可以使用命令行,而不用IDE提供的编译插件,那又怎样呢?对于代码开发来说重要的其实是交叉编译工具而不是IDE。以最常见的IDE软件eclipse为例,写Java的时候可以用,写Android的时候可以用,写C++的时候可以用,甚至嵌入式的时候也可以用。你想说Android的开发环境像Java吗?事实上,早期的Android确实是用Java编写的。同时,现在Android Studio 看起来很像vscode,为什么没有人抱怨呢?

可以说,对于程序员来说,IDE是可以随意更换的。这只是一种使用习惯,不会影响软件。有些人甚至可以仅使用记事本即可完成工作。早期Android开发从Eclipse过渡到Android Studio时,有不少人不适应,所以会继续使用Eclipse进行Android开发。

所以我认为用IDE作为那些无知的巨魔的攻击目标是非常愚蠢的。换句话说,能够访问IDE的巨魔中有相当一部分是程序员或者了解程序开发相关流程的人。他们应该能够理解IDE在程序开发中的作用,但作为一个调侃点,我想他们真的只是想批评,这和那些说鸿蒙不是中文而是英文的人一样愚蠢。

我这么说并不是说IDE不重要。 IDE的重要性在于编辑的方便,可以大大提高效率,但与系统和应用程序关系不大。毕竟它是可以被替代甚至被淘汰的。但这依然成为了攻击的目标,可见他是铁了心要杀他的。

优化与流畅度争议

你可以看到网上关于流畅度的争论。有趣的是,同一个系统说有些被卡住,有些则说如丝般光滑。但丝滑还是卡顿固然是主观和客观的,但流畅度总是不同的。禁用优化。但通过什么手段优化的效果是不同的。

当我们升级APP时,除了增加新功能之外,升级日志还可能会说APP进行了优化,增加了流畅度。这里的优化一般是应用层面的优化,比如代码逻辑或者处理方式和算法优化等。比如判断多个条件分支时,if else语句可以和switch语句互换。如果CPU支持分支预测(当然现在很多手机和PC的CPU都支持),那么使用switch可能会更快,但是在不支持分支预测的CPU上效果会类似。当然,这还涉及到CPU架构。以及时间和空间复杂性的讨论。这种级别的优化一般是APP程序员完成的。

更高层次的是系统级优化,比如优化系统调度方式,让系统更加高效,或者优化一些系统的动态显示等功能,让原来一秒做一件事,现在可以做两件事事物。那么这个速度自然就加快了。这种程度的优化一般是手机厂商来进行的(比如MIUI升级到12等),也可能是系统厂商来进行的(比如把原来低效的虚拟机运行环境改为直接原生支持) )。

下一个更高的级别是编译器级优化。很多人认为编译器有什么好的优化吗?其实就像我之前说的,有的编译器将“13”的代码编译成“1+1+1”的命令来调用加法运算符,而有的运算符则调用乘法运算符直接运行。这是有可比性的。性别?因此,达到编译器级别的优化一般都相当不错(当然我说的是华为)。

最高层次是硬件优化。例如,原来的CPU没有乘法器,所有乘法都需要使用加法器来计算。这效率太低了。那么只需要给CPU加一个乘法器就可以提高效率了(当然编译器也需要更新)。

对于苹果这样从app层面到CPU层面都进行优化的产品来说,难怪iPhone能够以很低的硬件实现最流畅的体验。华为现在正打算走这条路,但这条路并不好走。同时,敢于走这条路的企业一定是野心家。

因此,往往很难界定手机的流畅度是与硬件和软件有关,还是与两者都有关。几年前,蓝绿厂里有人声称这是一台智商机器(包括我),但当时我的很多朋友都在用它。尽管硬件比小米低很多,但很多人表示使用起来很流畅。事实上,他们在更换手机后仍然使用它。我愿意花很多钱买下蓝绿工厂。即使有的厂商堆砌了业界最顶尖的硬件,但结果也是大家有目共睹的。俗话说,一分钱一分货。有的人愿意为硬件付费,有的人愿意为软件(系统)付费。无论哪种方式,一款手机是否好用,并不能真正取决于硬件规格和跑分成绩。这是一个综合的考虑,而且很主观。

个人想法

随着鸿蒙的发布,我更愿意相信这是一场排除万难的奋斗。虽然现在还无法预测华为未来是否会成为屠龙少年,但就目前而言,很多人都对华为的力量感到恐惧。商人受利益驱使,不应该将华为与爱国主义捆绑在一起,但我确实希望华为能够突破美国的封锁,变得更加强大。

同时我不建议你连接华为和小米。在我看来,两家公司在愿景和宗旨上相差甚远。华为的目标更加雄心勃勃,而小米还处于野蛮阶段。结构不同,自然对产品的态度也不同。当年我还辱骂过蓝绿厂交智商税。现在回想起来,我发现他们确实很出色。毫不奇怪,同样的批评现在也落到了华为身上。毕竟,不同的方式是不能同时发挥作用的。一个正在深入,而另一个还没有认识到问题所在。

奇怪的是,我给家里其他人买了苹果,后来又买了华为,但我和妈妈一直在用小米。给家人购买的时候,我更多考虑的是稳定性和流畅性,所谓的性价比是次要的,所以我更愿意为软件付费。其实也证明华为确实值得信赖,两三年后依然顺利。在我看来,流畅一直是华为的强项。至于我,你想一想,自从毕业放弃苹果后,我就一直用小米了。原因之一是,作为程序员,我可能对参数理论有一些偏执。每次买东西的时候我就想,至少硬件是强大的,这样以后可以优化。可能会更好,感觉有点像A卡战斗未来,但事实上证明每一次优化升级都比原来更难用。我给妈妈买的小米就是因为它便宜,因为她在保修期内总是把它摔坏或掉进水里。她换手机的频率比谁都高,不便宜她就买不起。

最后,我不知道你会怎么想我。也许很多人说我是米黑,但这没关系。小米确实不如华为。这是不争的事实。希望华为能够成功突围,不用担心华为成为邪龙,因为每一条邪龙都会有屠龙少年来对付。我也希望小米能够真正做到性价比,不要让我天天抱怨。性价比并不意味着硬件功能强大、价格便宜。如果不好用,很多人都会像我一样用脚投票。他们对这种不幸感到悲伤和愤怒。每次买小米,我都希望每次更新系统,新系统都能进步。然而,每次我都感到失望,不断出现滞后和错误。

在这里,我想再次说明一下,我只是一个年轻的程序员,我对上面的很多内容可能有不正确或不透彻的理解。希望您能指点一下。