首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Dalvik是否被移植到其他平台(例如Linux,Windows等)?

Dalvik是一种基于Java虚拟机(JVM)的替代品,最初由Google为Android操作系统开发。它主要用于在Android设备上执行Java字节码。由于Dalvik虚拟机的特殊性质,它并没有被移植到其他平台,如Linux和Windows。

Dalvik虚拟机使用了一种特殊的字节码格式,称为DEX(Dalvik Executable),这种格式与传统的Java字节码(class文件)不同。因此,Dalvik虚拟机无法直接在其他平台上运行。如果想要在其他平台上运行Java应用程序,可以使用标准的Java虚拟机(JVM)。

然而,Android应用程序可以通过使用Android NDK(Native Development Kit)来编写本地代码,并在其他平台上运行。NDK允许开发人员使用C/C++等语言编写代码,并将其编译为本机可执行文件。这样,开发人员可以在其他平台上使用Dalvik虚拟机之外的技术和工具。

总结起来,Dalvik虚拟机并没有被移植到其他平台,但通过使用Android NDK,开发人员可以在其他平台上编写本地代码,并实现类似于Dalvik虚拟机的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Android 应用开发】对Android体系结构的理解--后续会补充

Android基于Linux2.6提供核心系统服务 , 例如 : 安全 , 内存管理 , 进程管理 , 网络堆栈 , 驱动模型 ....比如侦听电话,短信开启对应的广播接受者的服务 . 在linux启动的时候,将该服务加载进来,每个服务都会占用一个Dalvik虚拟机....通过提供开放的开发平台 , Android使用开发者能够编制极其丰富和新颖的应用程序 , 开发者可以自由的利用设备的硬件优势 , 访问位置信息 , 运行后台服务 , 设置闹钟 , 向状态栏添加通知 ;...对开发者 : 快速而灵活的开发平台 , 让开发者的灵感能快速转化为产品 .  8.Android开发种类  Android开发分为三种类型 :  (1)移植开发手机系统 将一个应用从不同的平台上进行移植...例如 : 这个平台的底层可能不支持 , 这个移植可以是从底层驱动到上层应用的整体移植 , 也可以是不同SDK版本上的应用移植 .

36940

26款优秀的Android逆向工程工具

使用AFE能够非常容易的自动创建一个Android平台的恶意软件,发现应用软件的漏洞(例如Leaking Content Providers,Insecure FileStorage,Directory...AFE是可扩展的,可以自由添加其他的模块或者将已有的工具移植AFE框架下。...目前支持Linux和Mac OS X中使用。 9. DEX2JAR dex2jar是一个能操作Android的dalvik(.dex)文件格式和Java的(.class)的工具集合。...包含一个简单的API(与ASM相似); d2j-dex2jar:执行dexclass的文件格式转换; smali/baksmali:与smali工具功能一致,但是对中文更友好; 其他工具:...特征表现为: 全面的Dalvik反编译器; 交互性; 可全面测试APK文件内容; 多平台(支持WindowsLinux和Mac操作系统)

5.6K30

谈一谈Android内存

我们都知道,我们的电脑或者其他硬件设备只认识二进制的机器码(例如0101)的。当我们用一个高级语言(C/C++/Java等等)写出的程序机器是没有办法识别的。...在windows上的指令可能是010101(举例,并非真实指令),而在Linux上定义警告弹窗是101111(同样为举例,以下所有涉及的指令仅为举例需要)。...所以我用C/C++写出了弹一个警告窗的代码,在Windows的编译器编译下生成了010101的代码,当我们拿着010101的代码去在Linux系统中执行时,糟糕!...如果在不同的系统平台上我都要分别去使用所在平台的编译器编译生成它们对应的机器码去执行(参考下图)。这就给应用的移植带来很大的困难。 聪明的人类总是能想到好办法,虚拟机的概念从空而降。...只要生成了.class文件,我们无论放在Windows上还是Linux中,只要对应平台安装了Java虚拟机,.class文件都能够愉快的虚拟机执行。我们前面不是讲不同平台机器指令不同的嘛!

61020

速读原著-Android应用开发入门教程(一)

第1章 Android的系统介绍 Android 是 Google 开发的基于 Linux 平台的、开源的、智能手机操作系统。...Android 包括操作系统、中间件和应用程序,由于源代码开放,Android 可以移植不同的硬件平台上。...HTC 和 Google 合作推出了几款手机:G1、G2、Hero 和 Nexus One,其他的手机厂商也推出了几款 Android手机, 围绕在 Google 的 Android 系统中,形成了移植开发和上层应用程序开发两个不同的开发方面...AVDs(Android Virtual Devices,Android 虚拟设备) 用于配置模拟器,模拟出类似的设备效果 DDMS(Dalvik Debug Monitor Service,Dalvik...,例如:点击(click)、触摸(touch)、挥手(gestures),还包括一系列系统级事件。

41620

安卓到底是不是Linux

Linux 的内核是由 Linus Torvalds 在1991年首次编写。它是操作系统的核心,包括设备驱动、文件系统、进程管理、网络通信。...所以我觉得安卓和其他 Linux 发行版本本质上没有太大区别,只不过安卓对 Linux 的内核做了一些裁减,并且在上面跑了一个 Dalvik / ART,而其他 Linux 发行版本跑了很多个 “Dalvik...2) 可以在Linux 桌面上运行安卓的应用吗? 因为其他 Linux 发行版本也没有 Dalvik / ART,所以安卓的应用在 Linux 桌面上不能直接运行。...不过我们只需要将 Dalvik / ART 移植 Linux 桌面环境就可以了。...在 Linux 的发行版本中,我们可以使用 Java 虚拟机,也可以使用其他框架,比如 GTK, QT等等,它们编译出来的二进制代码可以直接运行在 Linux 内核上,它们和 Dalvik / ART

6.3K30

Android架构你了解的有多少?进来看看就知道了

Android主要应用于ARM平台,但不仅限于ARM,通过编译控制,在X86、MAC体系结构的机器上同样可以运行。...android分为四个层,从高层低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。...其实Android并非所有的设备驱动都放在linux内核里面,有一部分实现在用户空间, 这么做的主要原因是可以避开Linux所遵循的GPL协议,一般情况下如果要将Android移植其他硬件去运行, 只需要实现这部分代码即可...每一个 Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。 Dalvik设计成一个设备可以同时高效地运行多个虚拟系统。 ...Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。

80811

Android 渗透测试学习手册 第一章 Android 安全入门

随着人气的增加,它存在很多安全风险,这些风险不可避免地引入应用程序中,使得用户本身受到威胁。 我们将在本书中以方法论和循序渐进的方式来讨论 Android 应用程序安全性和渗透测试的各个方面。...由于 Android 基于 Linux 平台,它还使开发人员易于将 Android 移植其他平台和架构。...Android 还提供了一个硬件抽象层,供开发人员在 Android 平台栈和他们想要移植的硬件之间创建软件钩子。...移植的。...你必须注意,每次从 Play 商店或任何其他来源下载应用程序时,它会在安装过程中显示一个权限屏幕,它类似于以下屏幕截图: 此权限屏幕显示应用程序可以通过手机执行的所有任务的列表,例如发送短信,访问互联网和访问摄像头

71520

Android 自学笔记

Android的独特之处 基于Linux的免费开源平台:手机制造商对其钟爱有加,因为他们可以对这个平台进行定制,而无需支付版权费。...开发人员也喜欢它,因为他们知道这个平台不受制于任何可能破产或收购的厂商。 基于组件的架构:能够以不同于开发人员最初设想的方式使用应用的组成部分,甚至可以将内置组件替换为改进版本。...可移植性:所有程序都使用Java编写,并由Android的ART预先编译器或Dalvik虚拟机执行,因此代码可移植ARM、x86和其他体系结构。...Content Provider使一个应用程序的指定数据集提供给其他应用程序。 BroadcastReceive Android应用程序可以过滤感兴趣的外部事件(电话呼入、网络可用)并做出响应。...Stopped Activity完全遮挡,但保留所有的状态和成员信息。 Killed Activity销毁

60820

JNI总结(一)

由于 JNI是 Java平台定义的规范接口。当程序猿向 Java代码集成本地库时。仅仅要在一个平台中攻克了语言互操作问题。就能够把该解决方式比較easy的移植其它 Java平台中。...比方为 Dalvik加入了一个本地库,也能够把这个本地库非常easy的移植 J2SE和 Apache Harmony中,由于在 Java与 C/C++互操作方面,大家都遵循一套 API接口,即 JNI...本地应用程序,通常依赖于一个特定的平台环境,用 C、C++语言开发。并编译成平台相关的二进制指令,目标二进制代码在不同 OS 间一般不具有可移植性。...Java平台做的全部努力。都为了使程序更具可移植性。 当 Java 平台部署本地系统中。有必要做到让 Java 程序与本地代码协同工作。...这就要求终于产品是一个强大而稳定的平台,达到此目标是个旷日持久的事. 看看 Java,WindowsLinux,Qt。WebKit 发展了多少年?向全部软件project师致敬!

24810

B4A编程开发路线001_Android安卓基础

SDK就是指可以为第三方开发者提供特定的软件包、软件框架、硬件平台、操作系统创建应用软件开发工具的集合,并且SDK还能简单的为某个程序设计语言提供应用程序接口API的一些文件。...OpenGL ES:是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机嵌入式设备而设计的3D效果库。 FreeType:一个完全免费(开源)的、高质量的且可移植的字体引擎。...,每一个Dalvik应用作为一个独立的Linux进程执行,这样可以防止某一虚拟机崩溃时所有的应用都被关闭。...例如,Android Runtime (ART 即 ART 虚拟机 ) 最终调用底层 Linux 内核来处理线程和底层内存管理底层功能。...例如,开发者做了一个联络人的应用程序,可以不存储任何联络人的资料,可以透过内容提供者如电话本取得联络人的信息;而其他需要联络人资料的APP也可以透过同一个内容提供者或者联络人的资料。

74570

老码农的运行时漫谈

有些编程语言在链接时期或运行时期才执行一部分编译,例如即时编译(Just-in-time compilation)。 程序执行中的某些问题只能在运行时期才能进行检测,例如逻辑错误或数组边界检查。...运行时验证关注于检测程序的运行轨迹是否满足或违背监控的性质。当程序的运行满足或违背监控性质时,运行时验证技术一般不会对监控的系统进行调整。...第二种是轻运行时,例如Golang,它的运行时是和代码打包一起的,相对轻量一些。 第三种是重运行时,例如Java(JVM),Python(CPython),还有 C#(.NET Runtime)。...这样程序员使用APR编写真正可在不同平台移植的程序。 APR使得平台细节的处理进行下移。...对于应用程序而言,它们根本就不需要考虑具体的平台,不管是Unix、Linux还是Window,应用程序执行的接口基本都是统一一致的。因此对于APR而言,可移植性和统一的上层接口是其考虑的一个重点。

38220

Android 系统架构

C/C++程序库 C/C库Android系统中的不同组件使用,并通过应用程序框架为开发者提供服务。...ART Android 5.0后,Dalvik虚拟机ART取代。...与JVM相比,Dalvik虚拟机(DVM)是专门为移动设备定制的,允许在有限的内存同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。...为了保护硬件厂商的知识产权,它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。...Linux内核层(Linux Kernel) Android的核心服务基于Linux内核层,这一层为android设备的各种硬件提供了底层的强大驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi

35060

嵌入式系统软件层次结构

操作系统如:Windows、Unix、Linux,它们的运行平台在通用计算机上都是标准的。但嵌入式系统不然,嵌入式处理器多种多样,目前不下几百种,即使同一种体系的嵌入式处理器,它们的配置仍有不同。...嵌入式操作系统 目前流行的嵌入式操作系统可以分为两类: 从运行在个人电脑上的操作系统向下移植嵌入式系统中, 形成的嵌入式操作系统, 如微软公司的Windows CE 及其新版本,嵌入式Linux ...Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 95/98/2000上的编程工具(如Visual Basic、Visual C++)...Linux系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒,在各种嵌入式Linux OS 迅速发展的状况下,Linux OS逐渐形成了可与Windows CEEOS进行抗衡的局面。...汇编语言写的部分已经压到最低限度,使得μC/OS-II便于移植其他微处理器上。μC/OS-II可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器(DSP)上运行。

1.8K20

从JVMDalivk再到ART(class,dex,odex,vdex,ELF)

Dalvik 是 Google 公司自己设计用于 Android 平台的虚拟机,是 Google 厂商合作开发的 Android 移动设备平台的核心组成部分之一。...因为基于栈的虚拟机也有它的优点,它不对 host 平台的 寄存器数量 做假设,有利于移植不懂的平台,这也符合的Java跨平台的特点。...而Dalvik 虚拟机则不关心这些,因为它本来就是为 ARM 这样的多寄存器平台设计的,另外 Dalvik 移植 x86 机器上,即使 x86 这种寄存器少的平台,寄存器架构的虚拟机也可以运行。...当某段代码调用时,虚拟机会判断它是否需要编译成机器码,如果需要,就做一个标记,JIT 线程不断判断此标记,如果发现被设定就把它编译成机器码,并将其机器码地址及相关信息放入 entry table 中,...取而代之的是,代码在执行期间分析,分析结果保存起来。然后,当设备空转和充电的时候,ART 会执行针对“热代码”进行的基于分析的编译,其他代码不做编译。

1.8K21

Android入门介绍

,包括 一个完整的操作系统 中间件 关键的应用程序 底层是Linux内核 安全管理 内存管理 进程管理 电源管理 硬件驱动 Android体系结构 Applications:桌面、电话、浏览器应用程序...Android运行时 Core Libraries Dalvik Virtual Machine Linux Kernel: 硬件驱动、电源管理 Dalvik VM和JVM的区别 编译后文件的格式:...),执行效率比JVM要高 Dalvik专门针对移动平台进行优化 JVM的jar包中会有很多class文件,每个class文件中都含有头信息、常量池、字段、方法,而apk中只有一个dex,它里面包括了所有头信息...文件安装到虚拟机完成程序安装 启动程序 – 开启进程 – 开启主线程 创建Activity对象 – 执行OnCreate()方法 按照main.xml文件初始化界面 简单的来说软件的安装都是两个过程 拷贝apk中的一些文件系统的某个目录.../data/app/目录下 创建一个文件夹 /data/data/com.test.helloworld/来保存数据 在系统的packages.xml文件(类似于Windows的注册表

98650

Java虚拟机JVM详解

作用: Java虚拟机就是 二进制字节码的运行环境 ,负责装载字节码其内部,解释/编译为对应平台上的机器指令执行。...具备现代高性能虚拟机的维形 热点探测(寻找出热点代码进行缓存) 编译器与解释器混合工作模式 只在Solaris平台短暂使用,其他平台上还是classic vm,英雄气短,终Hotspot虚拟机替换 HotSpot...(比如其他两个商用虚机都没有方法区的概念) 从服务器、桌面移动端、嵌入式都有应用。 名称中的HotSpot指的就是它的热点代码探测技术。...只能在window平台下运行。但却是当时Windows下性能最好的Java VM。 1997年,Sun以侵犯商标、不正当竞争罪名指控微软成功,赔了Sun很多钱。...它执行的dex(Dalvik Executable)文件可以通过class文件转化而来,使用Java语法编写应用程序,可以直接使用大部分的Java API

42400

超详细JVM详解

作用: Java虚拟机就是 二进制字节码的运行环境 ,负责装载字节码其内部,解释/编译为对应平台上的机器指令执行。...具备现代高性能虚拟机的维形 热点探测(寻找出热点代码进行缓存) 编译器与解释器混合工作模式 只在Solaris平台短暂使用,其他平台上还是classic vm,英雄气短,终Hotspot虚拟机替换 HotSpot...(比如其他两个商用虚机都没有方法区的概念) 从服务器、桌面移动端、嵌入式都有应用。 名称中的HotSpot指的就是它的热点代码探测技术。...只能在window平台下运行。但却是当时Windows下性能最好的Java VM。 1997年,Sun以侵犯商标、不正当竞争罪名指控微软成功,赔了Sun很多钱。...它执行的dex(Dalvik Executable)文件可以通过class文件转化而来,使用Java语法编写应用程序,可以直接使用大部分的Java API

42900

Android 系统架构和应用组件那些事

Android 系统架构 Android系统的底层建立在Linux系统之上,该平台由操作系统、中间件、用户界面和应用软件4层组成,它采用一种被称为软件叠层(Software Stack)的方式进行构建...04Linux内核层 Android系统主要基于Linux2.6内核开发,Linux内核层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、电源管理驱动...Dalvik是Google公司自己设计的用于Android平台的虚拟机,它可以简单地完成进程隔离和线程管理,并且可以提高内存的使用效率。...这多个Activity之间可以进行相互跳转,例如,按下一个Button按钮后,可能会跳转到其他的Activity。...当然这个播放音乐的Service也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键

1.7K60
领券