Android(安卓)是一个基于Linux内核的开放源代码移动操作系统,由谷歌(Google)成立的开放手持设备联盟持续领导与开发,主要设计用于触摸屏移动设备如智能手机和平板电脑与其他便携式设备。
可从Android开源项目获取源代码,Android系统及相关工具、sdk的源代码都托管在Google的git服务器android Git repositories上。程序员可以从Android开发者上获取工具和帮助文档,在github上也有一个android repositories,上面放了一些Sample项目
平台版本 | API级别 | VERSION_CODE | 发布日期 | 版本代号 | Runtime | 备注 |
Android 11.0 | 30 | 2020.2.19 | ART(Android Runtime) | |||
Android 10.0 | 29 | Q | 2019.9.3 | 平台亮点 | ||
Android 9 | 28 | P | 2018.8.6 |
Pie(派) |
平台亮点 | |
Android 8.1 | 27 | O_MR1 | 2017.12.5 | Oreo(奥利奥) | 平台亮点 | |
Android 8.0 | 26 | O | 2017.8.21 | 平台亮点 | ||
25 | N_MR1 | 2016.10.4 | Nougat(牛轧糖) | 平台亮点 | ||
Android 7.0 | 24 | N | 2016.8.22 | 平台亮点 | ||
Android 6.0 | 23 | M | 2015.10.5 | Marshmallow(棉花糖) | 平台亮点 | |
Android 5.1 | 22 | LOLLIPOP_MR1 | 2015.3.9 | Lollipop(棒棒糖) | 平台亮点 | |
Android 5.0 | 21 | LOLLIPOP | 2014.11.3 | ART 2.1.0 | ||
Android 4.4W | 20 | KITKAT_WATCH | Kitkat(奇巧巧克力) | 仅限 KitKat for Wearables | ||
Android 4.4 | 19 | KITKAT | 2013.10.31 | Dalvik(JIT)及ART1.6.0 | 平台亮点 | |
Android 4.3 | 18 | JELLY_BEAN_MR2 | 2013.7.24 | Jelly Bean(果冻豆) | Dalvik(JIT) | 平台亮点 |
17 | JELLY_BEAN_MR1 | 2012.11.13 | 平台亮点 | |||
16 | JELLY_BEAN | 2012.7.9 | 平台亮点 | |||
15 | ICE_CREAM_SANDWICH_MR1 | 2011.10.9 | Ice Cream Sandwich(冰淇淋三明治) | 平台亮点 | ||
14 | ICE_CREAM_SANDWICH | |||||
Android 3.2 | 13 | HONEYCOMB_MR2 | Honeycomb(蜂巢) | |||
Android 3.1.x | 12 | HONEYCOMB_MR1 | 平台亮点 | |||
Android 3.0.x | 11 | HONEYCOMB | 平台亮点 | |||
10 | GINGERBREAD_MR1 | 2011.2.9 | Gingerbread(姜饼) | Dalvik(JIT) 1.4.0 | 平台亮点 | |
9 | GINGERBREAD | Dalvik(JIT) | ||||
Android 2.2.x | 8 | FROYO | Froyo(优格冰淇淋) | Dalvik(JIT) | 平台亮点 | |
Android 2.1.x | 7 | ECLAIR_MR1 | Eclair(闪电泡芙) | Dalvik虚拟机 | 平台亮点 | |
Android 2.0.1 | 6 | ECLAIR_0_1 | ||||
Android 2.0 | 5 | ECLAIR | ||||
Android 1.6 | 4 | DONUT | Donut(甜甜圈) | 平台亮点 | ||
Android 1.5 | 3 | CUPCAKE | Cupcake(纸杯蛋糕) | 平台亮点 | ||
Android 1.1 | 2 | BASE_1_1 | ||||
Android 1.0 | 1 | BASE |
Android从诞生起,编译器将java代码编译成自己的字节码而并非java字节码(如.dex文件,即dalvik executable),并在运行时使用基于寄存器的Dalvik虚拟机(JVM虚拟机是基于栈的)对字节码解释执行
Android2.2开始,Dalvik虚拟机增加了即时编译(JIT)技术。在应用程序启动时,JIT通过进行连续的性能分析来优化程序代码的执行,在程序运行的过程中,Dalvik虚拟机在不断的进行将字节码编译成机器码的工作。
Android4.4,ART(Android Runtime)对外发布;Android5.0及之后的版本取代Dalvik虚拟机
ART能够把应用程序的字节码转换为机器码,是Android所使用的一种新的虚拟机。
它与Dalvik的主要不同在于:Dalvik采用的是JIT技术,而ART采用Ahead-of-time(AOT)技术。
ART引入了AOT这种预编译技术,在应用程序安装的过程中,ART就已经将所有的字节码重新编译成了机器码。应用程序运行过程中无需进行实时的编译工作,只需要进行直接调用。
因此,ART极大的提高了应用程序的运行效率,同时也减少了手机的电量消耗,提高了移动设备的续航能力,在垃圾回收等机制上也有了较大的提升。
为了保证向下兼容,ART使用了相同的Dalvik字节码文件(dex),即在应用程序目录下保留了dex文件供旧程序调用,然而.odex文件则替换成了可执行与可链接格式(ELF)可执行文件。
一旦一个程序被ART的dex2oat命令编译,那么这个程序将会指通过ELF可执行文件来运行。
因此,相对于Dalvik虚拟机模式,ART模式下Android应用程序的安装需要消耗更多的时间,同时也会占用更大的内部储存空间,用于储存编译后的代码。
截至2020.4.10,各版本Android系统的占比情况如下:
截至2020.4.10,OpenGL ES的设备占比:
注:支持某个特定的 OpenGL ES 版本还意味着支持所有级别低于该版本的版本(如:支持版本 2.0 也意味着支持版本 1.1)
硬件
Android的主要硬件平台为ARM架构(中文 包括ARMv7及ARMv8-A ),在更高端版本的Android中也正式支持x86及x86-64的架构。非官方的Android-x86的项目在得到官方正式支持之前为x86架构提供支持。
ARM架构,过去称作高级精简指令集机器(英语:Advanced RISC Machine,更早称作Acorn精简指令集机器,Acorn RISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。
ARM处理器非常适用于移动通信领域,符合其主要设计目标为低成本、高性能、低耗电的特性。
Application Profile为Cortex-A 系列,Real-time Profile为Cortex-R 系列,Microcontroller Profile为 ARM Cortex-M 系列
Android手机使用是ARM Cortex-A系列
架构 | 位数 | 处理器家族 |
ARMv7-A | 32 | ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15, ARM Cortex-A17 |
ARMv8-A | 32 | ARM Cortex-A32 |
64/32 | ARM Cortex-A35,ARM Cortex-A53, ARM Cortex-A57,ARM Cortex-A72,ARM Cortex-A73 | |
64 | ARM Cortex-A34 | |
ARMv8.2-A | 64/32 | ARM Cortex-A55,ARM Cortex-A75,ARM Cortex-A76,ARM Cortex-A77 |
64 | ARM Cortex-A65, ARM Cortex-A65AE |
32位 vs 32
32位架构 | 64/32位架构 |
字节序:可配置大小端序(默认小端序) 指令编码长度:32位 通用寄存器:15个32位整数寄存器;R15是程序计数器(在较老的架构设计中为26位定址) ,R14作为链接寄存器(link register) 浮点寄存器:最多32个64位寄存器 |
字节序:可配置大小端序(默认小端序) 指令编码长度:AArch64/A64(64位)、AArch32/A32(32位);兼容ARMv7用户空间 通用寄存器:31个64位整数寄存器 浮点寄存器:32个128位寄存器 |
Android 4.4的建议是至少需要512MB的RAM,Android 7.1最低要求为1GB的RAM,最好是2GB及以上;而对于“低RAM”设备,340MB是必需的最低容量
Android 4.4 需要32位的ARMv7, MIPS或x86的架构处理器(后两者是非官方的),以及与OpenGL ES 2.0兼容的图形处理器(GPU)一同使用
Android支持OpenGL ES 1.1、2.0、3.0、3.1、3.2,从Android 7.0开始支持Vulkan (API)
刘海屏、全面屏
https://www.jianshu.com/p/f04f066a626d
Android开发
https://www.cnblogs.com/nebie/p/9145627.html
https://www.androiddevtools.cn/#
1. JDK
2. Android SDK
windows版本:platform-tools-latest-windows.zip
mac版本:platform-tools-latest-darwin.zip
linux版本:platform-tools-latest-linux.zip
③ tools
⑤ emulator(模拟器)
⑥ gradle-plugin(gradle插件)
3. NDK
最新版本:https://developer.android.com/ndk/downloads
老版本:https://developer.android.com/ndk/downloads/older_releases
4. apache-ant
5. gradle
6. IDE
Android Studio
Eclipse + ADT插件
SDK管理器
sdkmanager:命令行SDK管理工具
https://developer.android.com/studio/command-line/sdkmanager
Android SDK Manager
https://developer.android.com/studio/intro/update.html#sdk-manager
NVIDIA CodeWorks for Android