-
2021-06-28 11:40:10
一、都有哪些版本及特性?
太低的版本,就不收集了,从4.x 开始主要有:
- 版本与API
API Level 最初Android版本 简称 Linux内核版本 首次发布日期 后续Android版本 29 10 Q Unknown 2019-06-05 (Beta 4) 28 9 P,Pie 4.4.107, 4.9.84, and 4.14.42 2018-08-06 无 27 8.1 O,Oreo 4.10 2017-12-05 无 26 8.0 O,Oreo 4.10 2017-08-21 无 25 7.1 N, Nougat 4.4.1 2016-10-04 7.1.1、7.1.2 24 7.0 N,Nougat 4.4.1 2016-08-22 无 23 6.0 M, Marshmallow 3.18.10 2015-10-05 6.0.1 22 5.1 LOLLIPOP_MR1 3.16.1 2015-03-09 5.1.1 21 5.0 LOLLIPOP 3.16.1 2014-11-12 5.0.1、5.0.2 20 4.4w KITKAT_WATCH 3.10 2014-06-25 4.4w.1、4.4w.2 19 4.4 KITKAT 3.10 2013-10-31 4.4.1、4.4.2、4.4.3、4.4.4
- 版本与特性
版本 重要特性 Android 4.x 1.新锁屏界面
2. 全新Widget排列
3.更直观的程序文件夹
4.人脸识别解锁
5.截屏功能
6.全新通知栏
7.语音识别的键盘
6.浏览器,全新浏览器支持最多16个活动标签页Android 5.x 1.Material design
2. 改善通知栏,提升可视化、亲近性、可编辑性
3.系统由以往的Dalvik模式改为采用ART(Android Runtime)模式
4. V7中引入CardView和RecycleView等新控件;
5.支持64位系统Android 6.x 1.新增运行时权限概念
2.新增瞌睡模式和待机模式
3. 移除对Apache HTTP client的支持
4. Doze电量管理Android 7.x 1.通知栏快捷回复
2.加入原生分屏多任务功能,多任务快速切换
3.VR的支持
4.引入全新的JIT编译器
5.安全:更安全的加密模式 ,对单独的文件进行加密Android 8.x
(Android O)1.画中画
2.Notification Dots
3.自动填充(Auto-Fill)
4.自适应图标(Adaptive icons)
5.后台进程限制
6.运行时权限策略变化Android 9.x
(Android P)1.自适应电池
2.黑暗模式
3.应用程序操作
4.应用定时器,可以自由设置程序的使用时限
5.自适应亮度
6.切片,可以在使用Google搜索应用搜索应用时看到丰富的数据
7.辅助功能菜单
8.更轻松的文本选择
9.新截图快捷方式,点击Power菜单中的图标可以随时获取屏幕截图
10.一个新的Home按钮
11.新的手势导航
12. 更容易的屏幕旋转
13.通知信息,令人分心的通知的应用
14.仪表板,显示你花了多少时间使用手机
15.通过Wi-FiRTT进行室内导航
16.改进的DND模式
17. 锁定模式
18.改进的消息应用程序,在消息应用程序中查看图像
19.所有应用都使用HTTPS
20.媒体面板
21.ART的改进
22.157个新的Emojis表情
23.WindDown,让你更容易入睡
24.多摄像头支持
24.Wi-Fi MAC随机化Android 10.x
详情看官网1.可折叠设备, 在设备折叠或展开时维持应用状态
2 5G 的平台支持
3.通知中的智能回复
4.深色主题新增,省电
5.设置面板
6.共享快捷方式,让用户能够直接跳转到其他应用来共享内容
7.用户隐私设置
8.安全性
9.摄像头和媒体
10.改进连接性
11.Android 基础知识 ,ART 优化, 增加一些api
12. 更新速度更快,代码更新频率更高
- 其它
更多相关内容 -
基于Android的员工考勤系统(源码+文档).zip
2022-02-26 19:15:23通过对3G手机常用的android系统的研究,测试了这种平台的大部分功能,android系统的开放性特点、良好的第三方程序开发环境和高效的可扩展性功能也方便了在android平台上才各种应用的开发。Android是一种新的系统,不... -
Android 10系统新特性解读
2019-03-04 12:12:01和往年一样,将于今年5月7日举办的谷歌 I/O 19大会上谷歌将发布首版Android Q Beta系统。按照惯例,Android Q Beta并非首个开发者预览版,可能是第二或者第三版,Beta阶段更大意义在于非谷歌系的OEM品牌手机加入,...概述
和往年一样,将于今年5月7日举办的谷歌 I/O 19大会上谷歌将发布首版Android Q Beta系统。按照惯例,Android Q Beta并非首个开发者预览版,可能是第二或者第三版,Beta阶段更大意义在于非谷歌系的OEM品牌手机加入,便于测试和用户尝鲜。至于正式版什么时候发布,按照惯例,会在8月或者9月发布稳定的版本供用户使用。
根据目前流出的关于 Android Q 新闻,特别是随着Android Q内测系统的泄露,以及对AOSP代码、System UI APK的挖掘,Android Q的很多特性已经曝光。可以预测的是,WPA3加密和5G/5G+肯定会在这次版本中出现,另外一些AOSP代码还涉及:
限制程序访问剪贴板
:安卓系统此前毫无限制的剪贴板功能在Android Q中将纳入监管,目前的代码暗示只有OEM厂商签名的程序才有访问权。允许应用程序降级
:当对商店更新后的版本后悔时,可以“回到过去”即回滚到旧版。限制外部存储访问权
:授予程序SD卡读写权限后就可以任意操作卡内的任意文件,Android Q将加以限制,避免用户数据误删或隐私泄露。后台程序位置访问功能
:此前后台程序不被允许访问位置信息,虽然保护了隐私但对某些程序也造成了困扰,Android Q将加以甄别恢复。
新特性
下面的这些内容来自 XDA Developer。他们通过 2019年2月的安全补丁,获得了 Android Q 早起版本相关信息。
1、 暗黑模式
Android Q 的暗黑模式和 Android Pie 的暗黑模式不同,在 Android Q 中,暗黑模式适用于任何地方,如果应用不支持暗黑模式,那么系统将自动设置一个暗黑模式。
2、桌面模式
Android Q 将支持桌面模式,类似三星 Dex 和华为的投影模式。它提供类似一个类似于 PC 的体验,但是远远不能代替 PC。
3、 隐私增强
Android Q 还将更多地使用 Android Pie 中推出的隐私功能。 在 Android Q中,您可以选择应用程序在后台运行时是否可以访问该位置,感觉跟iOS学的。
此外,当应用程序使用您的位置数据、麦克风或摄像头时,您将在通知栏中看到相应的图标, 它会告诉你哪个应用程序正在使用该权限。
Android Q 中还有一个新的专用隐私页面,它可以显示了您的联系人、短信和其他敏感信息的应用程序的确切数量。4、 超级锁定模式
目前,Android Pie 版本已经有一个锁定模式,可以禁用指纹传感器,可以猜 想的是Android Q 将会有某种超级锁定模式。
泄漏的信息中包括一个“传感器关闭”切换按钮,该按钮将设备置于飞机模式,并禁用手机上的所有传感器。5、 屏幕录制
Android Q 支持屏幕录制,就像 iOS 一样。透过泄漏信息我们发现,Android Q的录屏功能还不完善,可能需要在后面的beta版本中进行修复,可以通过长时间按下“电源”菜单中的“屏幕快照”来开启。
6、 移除 Android Beam
Android Beam用于在设备之间共享文件,是Android 4.0版本推出的一个功能,不过这个功能基本上没有什么人用,移除了很多人也没什么感觉吧。
7、 运营商锁定
如果你从运营商那里购买锁定的 Android Q 设备,他们将有能力阻止你使用其他特定运营商的SIM卡。
8、 面部识别
XDA 团队发现了一串字符串,这些字符串表明 Android 10 将具有内部面部识别功能。 这意味着谷歌官方支持面部解锁系统。
9、 限制程序访问剪贴板
Android Q 包含了名为“READ_CLIPBOARD_IN_BACKGROUND”的新权限。 顾名思义,新的权限将阻止随机的后台应用程序访问剪贴板内容。
10、 应用程序降级
当对商店更新后的版本后悔时,可以“回到过去”即回滚到旧版。
11、新字体、图标形状和提示颜色
Android Pie的一个特点是能够改变背景主题,泄露的 Android 信息中展示了新的两种新字体,图标形状,如正方形、松鼠、TearDrop,新的提示颜色:黑色、绿色和蓝色。
目前Android Q还没有正式发布,John Wu实现Root所使用的ROM应该是一个早期的内测版本系统。在后续的开发测试过程中,这个系统应该还会得到一定的修补和更新,让我们期待Android Q的到来吧。
-
安卓9.0系统新特性
2019-09-08 14:44:27日前针对Android系统特有的开放式特点,及其所带来的卡顿、运行不流畅问题,谷歌特意研制出最新版Android 9.0,以增强系统的封闭性。于是,网上曝出了很多安卓“抄袭”“模仿”iOS的说法。不过在笔者看来,不管...安卓9.0系统新特性
新特性一:
日前针对Android系统特有的开放式特点,及其所带来的卡顿、运行不流畅问题,谷歌特意研制出最新版Android 9.0,以增强系统的封闭性。于是,网上曝出了很多安卓“抄袭”“模仿”iOS的说法。不过在笔者看来,不管是不是“抄袭”,谷歌能有这方面的想法,便意味着安卓的未来,也许就不会比苹果的iOS系统差。
就像iOS系统11.3发布测试,Android 9.0系统预览测试或许也将在本月的14号左右发布。根据此前网络上许多爱好者的发生,我们也提前预料到这次的Android 9.0或许将带给我们同以往安卓系统,完全不同的体验。
1、适配异形全面屏
iPhone X的“刘海儿”屏造型初亮相时,被网友吐槽“丑哭”。确实,从常规的审美角度来说,“刘海儿”造型的屏幕设计并不美。但是这丝毫不影响它成为各大安卓手机厂商模仿的对象,笔者猜测,原因或许就因为它是苹果设计出来的,毕竟苹果在全球手机行业代表了某种权威。
所以在今年即将发布的新机型里面,有不少安卓厂商都是异形全面屏设计。而谷歌为了照顾好这一板块,即将面世的Android 9.0系统,自然也要具备适配“刘海儿”屏的功能。
2、原声支持虹膜识别
虽然现在很多手机都支持面部识别解锁,但是实话是说,这种技术目前尚不成熟,并不是很安全。而最好的办法还是配合虹膜识别来实现更加安全的面部解锁。日前,XDA的开发者从谷歌提交到开源项目的代码中发现,谷歌正致力于将虹膜识别技术集成到安卓系统当中,Android 9.0或许将会原生支持虹膜识别。
目前,在安卓手机的阵营中,仅有三星等几款手机支持虹膜识别,一旦Android系统能够原生支持这一功能,相信未来将会有更多的安卓手机支持。
3、支持手机秒变蓝牙鼠标、键盘
初见这则功能介绍的时候,笔者也是“大吃一惊”:难道Android 9.0还能这么玩儿?
早在2014年,高通 CodeAurora 论坛的一位成员层提交过一个增加 Android 设备对 HID 的支持。虽然这个功能在2016年的 Android 系统中测试后,仍被禁用和隐藏。
不过最新有信息现实,谷歌似乎重新激活了这个功能,并将其添加到了最新的Android 版本中。这意味着未来运行 Android 9.0 的设备将可以将自己变成 HID 设备,比如鼠标,键盘,甚至是游戏手柄都可以。
4、原生支持夜间主题
此前Android的黑夜模式曾在安卓6.0的时候出现过,不过遗憾的时,谷歌迟迟没有将其引入正式版。而根据不久前谷歌官方Android Issue Tracker泄露,Android 9.0将有两个新特性,即全局黑夜模式和为具备Always-on display(屏幕常显)功能手机加入原生的天气支持。
笔者猜测,这或许是因为谷歌考虑到了用户对续航敏感和有关灯玩手机的习惯。
新特性二:
室内WIFI定位
Android P增加了对RTT Wi-Fi协议的支持,以此作为室内定位的基础。
在支持硬件支持的Android P设备上,开启定位并且打开WIFI扫描后就可以使用该功能进行定位。应用可以测量与附近支持RTT的Wi-Fi接入点(AP)的距离。设备必须启用位置并启用Wi-Fi扫描(在设置>位置下)。使用这个功能不会连接到WIFI,而且为了保持隐私,只有手机能确定AP到设备的距离,反之则不能。
如果设备测量到3个或更多AP的距离,则可以使用多点定位算法来估算最适合这些测量值的设备位置。其结果通常可以精确到1至2米范围。//注:该处在2018.3.8的版本中还有bug,WIFI_RTT_RANGING_SERVICE没有添加到@ServiceName标记中 WifiRttManager wifiRttManager = (WifiRttManager) getSystemService(Context.WIFI_RTT_RANGING_SERVICE); RangingRequest.Builder builder = new RangingRequest.Builder(); builder.addAccessPoint(); builder.addWifiAwarePeer(); wifiRttManager.startRanging(builder.build(), () -> {...}, new RangingResultCallback{...});
该功能API在android.net.wifi.rtt下。
“刘海”屏幕支持
Android P 支持了手机屏幕是不规则形状时的获取(主要是应对刘海屏吧)。可以使用类似windowInsets.getDisplayCutout()来获取一些你想要的信息。
//您可以在自己的View中获取到不应该绘制的部分屏幕 getRootWindowInsets().getDisplayCutout().getBounds(); getRootWindowInsets().getDisplayCutout().getSafeInsetBottom(); getRootWindowInsets().getDisplayCutout().getSafeInsetLeft(); getRootWindowInsets().getDisplayCutout().getSafeInsetRight(); getRootWindowInsets().getDisplayCutout().getSafeInsetTop(); //也可以设置Window的属性 WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); layoutParams.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; layoutParams.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT; layoutParams.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;
通知
Android P还增加了许多对通知的支持。
增强体验
从Android 7.0开始,就优化了Android通知栏的体验。
在P当中,又新增了下述功能:
支持图像:Android P现在在手机上的消息通知中显示图像。您可以在消息上使用setData()来显示图像。
会话参与者的简化支持:新的Notification.Person类用于标记参与聊天的人,包括他们的头像和URI。还有其他的一些API,现在都用Person类作为标志参数而不是CharSequence。Notification.Builder builder = new Notification.Builder(this, "a"); //新的聊天对象 Notification.Person p = new Notification.Person(); //在MessagingStyle中用Person代替了以往的CharSequence Notification.MessagingStyle messageStyle = new Notification.MessagingStyle(p); Notification.MessagingStyle.Message message = new Notification.MessagingStyle.Message("aaa", 100, p); //可以显示图像了 message.setData(); messageStyle.addMessage(message); builder.setStyle(messageStyle); Notification notification = builder.build();
将回复另存为草稿:当用户无意中关闭消息通知时,您的应用可以检索系统发送的EXTRA_REMOTE_INPUT_DRAFT来获取一些信息。
确定对话是否是群组对话:您可以使用setGroupConversation()来有目的地将对话标识为群组对话或非群组对话。
为意图设置语义动作:setSemanticAction()方法允许您为某个动作提供语义含义,如标记为读取,删除,回复等。
SmartReplyAndroid O引入了Notification Channels,可让您为要显示的每种类型的通知创建一个用户可自定义的频道。 Android P通过以下更改简化了通知渠道设置:
阻止渠道:用户现在可以在应用的通知设置中阻止整组渠道。您可以使用isBlocked()方法来确定某个组何时被阻止,不对被阻止的组发送消息。
此外,您的应用可以使用新的getNotificationChannelGroup()方法查询当前渠道设置。
新的广播类型:Android系统现在在通知频道和频道组的阻塞状态发生变化时发送广播。拥有被阻止的频道或群组的应用可以监听这些Intent并作出相应的反应。有关这些Intent的更多信息,请参阅NotificationManager参考中更新后的常量列表。有关对广播Intent作出反应的信息,请参阅广播。
新的免打扰优先级类别:NotificationManager.Policy有两个新的策略常量:PRIORITY_CATEGORY_ALARMS(按优先级排列)和PRIORITY_CATEGORY_MEDIA_SYSTEM_OTHER(优先排列媒体,系统和游戏声音)现在,可以同时从两个或更多的物理摄像头同时获得数据流。在具有双前置或双后置摄像头的设备上,可以实现无法使用单个摄像头实现的功能,例如无缝缩放,散景 ,和立体视觉。 该API还允许您调用合理的或者融合的相机流,以便在两台或更多台相机之间自动切换。
相机的其他改进包括新的android.hardware.camera2.params.SessionConfiguration,有助于减少初始捕捉期间的延迟。而Surface共享可让相机客户端处理各种使用情况,而无需停止和启动相机流式传输。 此外还添加了基于显示的闪光灯支持的API。
Android P还支持支持deveices上的外部USB / UVC相机。Android P新增了ImageDecoder类,为解码图像提供了一种更优的方法。由此可以用ImageDecoder来替换BitmapFactory和BitmapFactory.Options。更多使用方法请参见官方API。
String filePath = "test"; File file = new File(filePath); ImageDecoder.Source source = ImageDecoder.createSource(file); ImageDecoder.decodeBitmap(source); ImageDecoder.decodeDrawable(source, (imageDecoder, imageInfo, source1) -> { //裁剪图像 imageDecoder.setCrop(); //调整大小 imageDecoder.setResize(); }); BitmapFactory.decodeFile(filePath);
动画
Android P引入了一个新的AnimatedImageDrawable类来绘制和显示GIF和WebP动画图像。 AnimatedImageDrawable与AnimatedVectorDrawable类似,因为AnimatedImageDrawable动画也是基于RenderThread工作的。 RenderThread本身在内部使用工作线程进行解码,因此解码不会干扰RenderThread。 这种实现允许您的应用拥有动画图像,而无需管理其更新或干扰应用的UI线程。
Drawable d = ImageDecoder.decodeDrawable(...); if (d instanceof AnimatedImageDrawable) { // Prior to start(), the first frame is displayed ((AnimatedImageDrawable) d).start(); }
HDR VP9视频,HEIF图像压缩和媒体API
Android P增加了对HDR VP9 Profile 2的内置支持。
Android P支持HEIF图像(隔壁IOS在2017年10月推的新的图片编码)编码。
Android P还引入了MediaPlayer2。该播放器支持使用DataSourceDesc构建的播放列表。MediaPlayer2.create();
注:笔者对图像/视频编解码方面不甚了了,有兴趣的可以自行参阅API。
在Android P当中,JobScheduler得到了改进,使其能够更好地为用户处理与网络相关的工作,并配合运营商分别提供网络状态信号。
Jobs现在可以定义出其估计的数据大小,预取信号,并指定详细的网络要求 - 运营商可以将网络报告为拥塞或不用流量计费的。然后,JobScheduler根据网络状态管理工作。例如,当网络拥塞时,JobScheduler可能推迟大型网络请求。在不用流量计费的的网络上时,JobScheduler可以预读来改进用户体验。对神经网络API新增了9个功能:Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub, and Squeeze。
Android 8.0(API26)引入了自动填充框架,这使得在应用中填写表单变得更加容易。 Android P引入了自动填充服务并实现了多项改进,以在填写表单时进一步增强用户体验。 有关更多详细信息,请参阅自动填充框架。
注:该自动填充框架笔者应是Google服务中的内容,国内用户可能会体验不到(或许有厂商自己的版本)。Android P引入了许多新的安全功能,包括统一的指纹验证对话框和敏感交易的高确信度的用户确认。 有关更多详细信息,请参阅安全更新页面。
Android P支持使用客户端密钥对Android备份进行加密。 这项隐私措施,需要设备的PIN,图案密码或标准密码才能从用户设备备份的数据中恢复数据。
要了解有关在Android设备上备份数据的更多信息,请参阅数据备份概述。
注:据笔者所知,国内厂商基本都做了自己的备份系统(或者和其他大厂合作),所以没兴趣的同学散了吧。 -
干货|Android系统定制开发基础篇
2021-09-30 08:14:48Android系统源码内容实在太广,其目录结构也实在庞大,每位开发者也无法做到对每一块都弄明白,工作中接触的也只是其中的一小部分。以下只从宏观上对系统源码的一级目录进行介绍,后续再慢慢完善更细致的内容。 ...一、Android源码目录结构
Android系统源码内容实在太广,其目录结构也实在庞大,每位开发者也无法做到对每一块都弄明白,工作中接触的也只是其中的一小部分。以下只从宏观上对系统源码的一级目录进行介绍,后续再慢慢完善更细致的内容。
二、Android虚拟机
1.Android虚拟机之Dalvik虚拟机
Android虚拟机的使用,使得Android应用和Linux内核分离,这样做使得Android系统更稳定可靠,比如程序中即使包含恶意代码,也不会直接影响系统文件;也提高了跨平台兼容性。在Android4.4以前的系统中,Android系统均采用Dalvik作为运行Andorid程序的虚拟机,在Android发展中具有举足轻重的地位,而Android5.0及以后的系统使用ART虚拟机取代Dalvik,在性能上做了很大的优化。这里将对这两款虚拟机做一些介绍,主要内容如下:
2.Dalvik在Android架构中所处的位置
Android系统架构图。从上图可以看到,Dalvik虚拟机在Android Runtime中,在Linux Kernel之上。Android其实就是一个操作系统,其底层基于Linxu Kernel,这一层有许多的驱动程序,主要完成操作系统所具备的功能。Android Runtime,即android的运行环境,我们可以类比于java的jre,即java平台运行时环境。Java程序的开发、编译和运行需要java的核心包(jdk/lib/和jre/lib)支持,然后通过JVM来运行java程序,同样android程序的运行也是如此,Libraries就相当于java的jdk/lib,是开发/编译android程序所需要的库,Android Runtime里面的Core Libraries里就相当于java的jre/lib,是运行android程序所需要的核心库,自然而然,Dalvik虚拟机也就类比于java中的JVM,用于运行android程序。
3.Dalvik的作用
Dalvik虚拟机在Android操作系统上虚拟出一个设备,用来运行android 应用程序。Dalvik是apk运行的温床,其作为面向Linux、为嵌入式操作系统特别设计的虚拟机, 主要负责完成对象的生命周期管理、堆栈管理、线程管理、安全及异常管理、垃圾回收等。Dalvik充分利用Linux进程管理的特性,对其进行了面向对象的设计,使得可以同时运行多个程序,而传统的Java程序通常只能运行一个进程,这也是为什么Android不采用JVM的原因之一。在Android中,每一个app进程对应一个Dalvik,多个app进程在运行,就对应多个虚拟机的存在,这样设计的好处就是,当一个应用crash后,只会影响自己所在的dalvik,而不会影响到整个系统,不同的进程之间(即不同的Dalvik之间)通过进程间通信来实现交互。
4.Dalvik和JVM的区别与联系
5.Davik的孵化器Zygote进程
在Android系统中有个一特殊的虚拟机进程Zygote,他是虚拟机实例的孵化器。它在系统启动的时候就会产生,完成虚拟机的初始化、库的加载、预制类库和初始化操作。如果系统需要一个新的虚拟机实例,他会迅速复制自身,以最快的速度提供给系统。对于一些只读的系统库,所有的虚拟机实例都和Zygote共享一块区域。
6.Dalvik的致命缺点-拖慢Android系统速度
Dalvik有个致命的弱点,就是Dalvik虚拟机一直被用户指责为拖慢Android系统运行速度而不如IOS的根源。主要原因如下:
(1).开发者因素
(2).运营商因素
(3).Dalvik运行时机制因素
在编译Android程序的时候,首先java代码被编译成class文件,然后被java打包工具dx打包成.dex文件,然后.dex文件和资源文件一起被压缩成apk文件。Apk文件其实也是zip格式,只是后缀被修改为apk,读者可以自己解压一个apk试试看。Android应用的安装过程:复制apk安装包到data/app目录下,解压并扫描安装包,把dex文件保存到dalvik-cache目录下,并在data/data目录下创建对应的应用数据目录。这样每次用户点击图标运行android程序时,dalvik虚拟机就会用JIT(Android2.2及以后版本)的方法把dex文件翻译为机器码,然后再执行机器码。虽然Dalvik虚拟机已经被做过很多优化(.dex文件基础上被优化为.odex文件,o表示optimization,“优化”的意思),但因为此种机制的存在,先翻译再执行,所以Android在电量消耗和程序运行流畅程度上一直不太理想。
Android中/data目录/data/app目录
/data/app目录下应用的信息
/data/dalvik-cache目录下的内容
/data/data目录下应用数据目录,存储对应应用运行中产生的一些数据
7.ART虚拟机取代Dalvik虚拟机
由于Dalvik虚拟机机制的问题,拖慢了android应用的速度。由此,ART(即Android RunTime)虚拟机应运而生,在Android4.4中可以在设置中切换选择Dalvik或ART作为虚拟机,在Android L(5.0)中就直接删除了Dalvik,而全面使用ART。ART在机制上做了优化,可以在第一次安装应用时,字节码就会预编译(即AOT编译:Ahead-of-time)成机器码,使其成为真正的本地应用。在点击桌面的应用图标运行时,无需再翻译字节码,而是直接运行机器码,从而提升了启动速度。另外,ART在英语单词中是“艺术”的意思,可见,ART虚拟机的设计是匠心独运,同时也是被其设计中所高度赞誉的。
8.Dalvik和ART对.dex文件的处理的对比情况
9.ART的优缺点
优点
ART的AOT方式相比于Dalvik的JIT方式(Just-In-Time,即时编译,,参见JIT_百度百科),主要由如下的有优势:
(1).ART抛弃了Dalvik的JIT方式,而采用AOT预编译方式,在安装apk的过程中,将.odex文件(.dex优化后的文件)预编译为二进制机器码,存储在设备中,以后每次启动应用的时候,直接运行机器码,而无需再翻译.odex,这样极大地提高了应用的启动速度。
(2).每次运行时所做的工作也少了,这样占用了更少的CPU资源,也消耗了更少的电池资源。
(3).ART也在开发者工具和垃圾回收器上做了改善。
Dalvik和ART在性能上的对比
缺点
硬币有正反面,ART的预编译,也带来了一定的劣势
(1).增加了安装时间。在安装的时候需要预编译,无疑增大了安装的工作量,从而增大了安装时间,对于一些大的应用,可能需要几分钟的时间才能安装完。
(2).需要更多的空间存储预编译后的机器码,无疑占用了更多的存储空间。当然,现在硬件设备更新换代很快,性能也非常好,相比于ART带来的优点,该缺点几乎没什么影响。
10.Android N对ART的优化
ART的机制使得apk在安装的时候比较耗时,为了改变这种状态,在Android N(Android7.0)中对此做了优化。Android N实现了一个使用AOT、解释、JIT混合模式的运行环境,这里使用的JIT是改进后的JIT,ART也提供了一种新的、更快的解释器。这种方式在apk安装的过程中不再进行预编译,第一次运行该应用相关程序后,在手机处于idle状态和充电的时候再将运行过的程序编译为机器码并存储在设备中。JIT提供了一套追踪机制来决定哪一部分代码需要在手机idle和充电的时候来编译(即热区域hot method的确定),这个追踪技术被称为Profile Guided Compilation,其工作原理如下:
(1).应用程序第一次启动的时候,只会通过解释器执行,同时JIT会介入并针对hot methods执行优化工作。代码在执行期间会被分析,分析结果被保存起来,同步输出一种被称为profile information的信息保存到文件中。该文件中记录了需要离线优化的hot methods,影响程序启动速度的Classes,它们主要用于进一步优化程序的启动速度。
(2).当设备处于idle状态并且在充电,就会进入Profile Guided Compilation服务,使用第一步中的profile information,生成二进制机器码,用于替代原始应用程序的相应部分。
(3).应用程序在后续启动时,就可以根据实际情况在AOT/JIT/Interpreter中选择最合适的执行方式了。
通过以上的步骤可以得知,因为有了Profile Guided Compilation,同一app会因为不同的用户行为产生不同的编译结果。
11.可以概括性地做一个总结:
第一次运行到某些模块的程序的时候(此次JIT信息不会持久化),产生一个文件来记录这些被执行的程序信息,从而实现了将以往在安装过程中预编译生成机器码的过程,延迟到手机处于idle和充电的时候来完成,最终实现既能避免漫长的安装等待,又不影响程序启动速度,还节约了空间(因为有些功能程序一直不被使用,就不需要编译为机器码占用空间),cpu资源,电池资源等的目的。
三、Android系统架构和源码的联系
Android虚拟机、Android的系统架构,其实在Native Libraries层和Linux Kernel层之间还有一层HAL层,即Hardware Abstract Layer,硬件抽象层。
Android源码官网中Android系统架构图
https://source.android.google.cn/
对于Android系统架构每一层,Android源码结构中都有相关目录与之对应。下图展示了在Android源码一级目录中,各框架层和部分目录的对应关系:
理解Android系统结构和Android系统源码的对应关系,有助于帮助咱们理解Anroid系统源码。当然这幅思维导图中只介绍了源码一级目录和系统架构的对应关系,深入各个目录,每个系统架构层还可以找到很多源码与之对应,读者可以再深入研究研究。与此同时,同一个目录下的源码,也可能涉及多个系统架构层的内容,比如frameworks层中就有frameworks/base/packages/SystemUI这个目录,众所周知,SystemUI是一款系统App,是属于应用层的。所以,对某个目录的对应的系统架构层,也不能一概而论。
Android源码阅读工具介绍
https://source.android.google.cn/
http://androidxref.com/
http://aospxref.com/
查看并选择系统版本
进入首页后,可以看到Google发布的各个系统版本,按照发布时间排序,包括版本别名,版本号,内核号等
源码查找主界面功能点
搜索条件的解锁及使用
进行全文搜索,属于模糊查询,忽略大小写,会匹配所有的单词、字符串、标识符以及数字等,包括注释在内。如下图所示,为全文搜索“Activity”的结果,也显示了所在文件的路径,可以点击进入对应的文件。
Android系统所有版本 https://www.androidos.net.cn/sourcecode Android Kernel系统所有版本 https://www.androidos.net.cn/sourcecode Android系统核心服务 https://www.androidos.net.cn/androidservice https://download.mokeedev.com/ https://wiki.lineageos.org/devices/ https://github.com/MoKee https://github.com/LineageOS
Android11系统源码的下载与编译方法(解决内存、磁盘不足问题)
Ubuntu虚拟机环境搭建Android系统源码编译环境及问题解决方法
Ubuntu18.04/20.04虚拟机编译Android4/5/6/7/8/9/10/11系统源码的问题解决
Android11系统源码的下载与编译方法(解决内存、磁盘不足问题)
原文链接
-
Android基础知识——Android系统——Android系统特性与平台架构
2019-09-09 16:39:15第一章:Android系统特性与平台架构 Android平台架构: 图1.1 google官方 Android平台架构图 Android系统分为5大层: Linux Kernel(linux内核)——liunx内核层 Hardwar... -
安卓用户爽翻:详解Android 5.0系统的十大新特性
2021-06-07 11:55:56距离Android系统上一次重大更新不到一年的时间,谷歌再一次从KitKat升级到了Lollipop,而两次都使用糖果来命名,营销的目的显露无遗。当我们首次看到Android 5.0 Lollipop这个名字的时候,就已经意识到这将是Android... -
Android系统架构
2022-06-02 19:26:42Android系统架构 -
基于Android平台的智能家居监控系统
2021-01-19 17:45:19智能监控系统基于Android操作系统平台,以平板式计算机作为客户端,通过HTTP协议从IP摄像机监控图片,并利用多种算法对家中各房间或不同角度的情况进行智能监控。 近年来,视频监控系统已在制造企业、物业管理、... -
安卓系统与苹果iOS系统的差别,谁更好用?为什么系统会卡顿?
2021-06-06 14:50:18在现在的智能手机圈,主要有两类操纵系统,一类是谷歌的安卓系统,目前最新的版本为Android P系统,该系统为开源系统,简单讲就是业态共享,比如谷歌手机的原生系统、华为的EMUI定制系统、小米的MIUI定制系统、魅族... -
Android系统安全与攻防
2019-07-23 09:57:12第4章深入研究了Android系统的安全特性;第5~9章介绍了Android系统平台和Android应用程序安全问题的各个方面;第10章展望了未来移动设备安全威胁的发展格局。附录A和附录B分别讨论了Android权限的风险等级和JEB ... -
安卓java获取网页源码-android-passwordmaker:为Android操作系统编写的密码生成器
2021-06-06 02:54:35安卓java获取网页源码适用于 Android 的 Passwordmaker Pro 这是由 设计的 Passwordmaker Pro 算法的 android 实现。 观看 。 工作原理:您向 PasswordMaker 提供两条信息:“主密码”——您喜欢的单一密码——以及... -
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2020-12-09 05:35:29分析一下应该是安卓系统版本的原因,目前已知的是Android 6.0 以上都 OK,6.0 以下就不行了。 低版本安卓系统内置的 webview 不支持 ES6 语法等一些新特性,所以报错。但在手机上调试不方便,受一篇文章的启发, IE ... -
Android 12 特性
2022-05-18 11:14:32Android 12 -
人脸图像特征提取matlab代码-Opencv-android:在Andriod手机上使用OpenCV识别人脸
2021-05-22 06:46:34OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 其运用领域有:人机互动、物体识别、图像... -
基于安卓系统的水涡轮特性参数无线监测系统.pdf
2021-09-21 21:51:03基于安卓系统的水涡轮特性参数无线监测系统.pdf -
Android那些事儿:安卓手机交互特性
2021-03-02 17:14:29这些特性可能对于习惯了其它手机操作系统的用户可能有不习惯的地方,需要重新学习和适应,另外在成长期中的Android系统也会存在不足,这些特性的总结有助于应用的用户体验提升。milestone为代表的android手机首先... -
绕过移动系统限制的dlopen库-Android开发
2021-05-26 12:25:27支持App中加载和使用Android系统库接口(即使maps中还没有被加载也支持)。 Android 7以上dlopen, System.load都是被限制调用的,虽然目前网上有Nougat_dlfunctions等库通过从maps中找so库来绕过加载限制。 不过对于... -
安卓系统最新版本是多少 Android M 最新功能
2021-05-28 04:52:02就在小编的手机还停留在Android 4.4的时候,谷歌今天的开发者大会已经发布了最新的安卓系统。一起来看看这个最新的系统是否值得我们更新系统或者更换手机吧!Android M 介绍5月29日消息,今天凌晨0:30,2015谷歌I/O... -
鸿蒙系统与安卓系统有什么区别
2022-04-25 12:56:58自从华为推出了鸿蒙系统后,不少网友都对此非常感兴趣,不知道跟传统的安卓系统相比,鸿蒙系统和安卓系二者有什么区别?鸿蒙系统与安卓系统还是有很大的区别。安卓系统是手机两大操作系统之一,而华为董事长任正非... -
安卓最牛教材!Android-10系统新特性解读
2021-06-12 22:03:36和往年一样,将于今年5月7日举办的谷歌 I/O 19大会上,谷歌将发布首版Android Q(即Android 10)系统。按照惯例,Android Q Beta并非首个开发者预览版,可能是第二或者第三版,Beta阶段更大意义在于非谷歌系的OEM... -
Android 高版本API方法在低版本系统上的兼容性处理
2021-01-05 19:42:11Android 版本更替,新的版本带来新的特性,新的方法。 新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性处理不恰当,APP在低版本系统上,运行时将会crash。 本文以一个具体的例子说明如何在使用高API ... -
Android操作系统的安全性分析
2013-12-24 10:45:15作为一个运行于实际应用环境中的终端操作系统,Android操作系统从设计之初就将系统的安全性设计融人到其体系结构设计 和功能模块设计之中。同时,它又是在原有的Linux内核及Java虚拟机的基础上进行了改造开发。在... -
安卓系统的开发
2021-02-17 11:05:43本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制。虽然Android系统非常庞大且错综复杂,需要具备全面的技术... -
Android平台特性
2020-11-10 21:52:53转自: ...utm_term=Android%E5%B9%B3%E5%8F%B0%E7%89%B9%E6%80%A7&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-81774490&spm=1018.2118.3001.4449 -
Android7.0下载地址 安卓7.0系统手机下载安装教程
2021-05-28 01:28:29导读安卓系统几乎是普及了所有人的手机,虽然6.0的安装率有点惨不忍睹,但是最近谷歌又有了新动作,在即将推出的安卓7.0系统又有哪些值得我们期待的功能呢?下面和小编一起去看看吧!虽然Android 6....安卓系统几乎是普及... -
Android安卓手机网上商城系统
2021-10-27 11:06:54程序功能说明: 使用安卓手机客户端实现的一个网络购物系统,客户端可以注册用户!...本文主要研究了Android平台的架构以及在Android平台上开发短信管理系统,除了即时文本信息的传输外,还可以进行地...