android os_android o是那个版本 - CSDN
  • 浅谈Android os体系架构

    千次阅读 2016-09-19 10:26:58
    本文主要介绍一下Android OS体系架构!

    OS体系结构介绍:

    第一、操作系统层(OS)

    第二、各种库(Libraries)和Android 运行环境(RunTime)

    第三、应用程序框架(Application Framework)

    第四、应用程序(Application)

    以下分别介绍Andoid各个层次的软件的重点及其相关技术:

    ● 操作系统层(OS)

    Android使用Linux2.6作为操作系统,Linux2.6是一种标准的技术,Linux也是一个开放的操作系统。Android对操作系统的使用包括核心和驱动程序两部分,Android的Linux核心为标准的Linux2.6内核,Android更多的是需要一些与移动设备相关的驱动程序。

    主要的驱动如下所示:

    显示驱动(Display Driver):常用基于Linux的帧缓冲(Frame Buffer)驱动。

    Flash内存驱动(Flash Memory Driver)

    照相机驱动(Camera Driver):常用基于Linux的v4l(Video for )驱动。

    音频驱动(Audio Driver):常用基于ALSA(Advanced Linux Sound Architecture,高级Linux声音体系)驱动。

    WiFi驱动(Camera Driver):基于IEEE 802.11标准的驱动程序

    键盘驱动(KeyBoard Driver)

    蓝牙驱动(Bluetooth Driver)

    Binder IPC驱动: Andoid一个特殊的驱动程序,具有单独的设备节点,提供进程间通讯的功能。

    Power Management(能源管理)

    ● 各种库(Libraries)和Android 运行环境(RunTime)

    本层次对应一般嵌入式系统,相当于中间件层次。Android的本层次分成两个部分一个是各种库,另一个是Android 运行环境。本层的内容

    大多是使用C++实现的。

    在其中,各种库包括:

    ▅ C库:C语言的标准库,这也是系统中一个最为底层的库,C库是通过Linux的系统调用来实现。

    ▅ 多媒体框架(MediaFrameword):这部分内容是Android多媒体的核心部分,基于PacketVideo(即PV)的OpenCORE,从功能上本库一共分为两大部分,一个部分是音频、视频的回放(PlayBack),另一部分是则是音视频的纪录(Recorder)。

    ▅ SGL:2D图像引擎。

    ▅ SSL:即Secure Socket Layer位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

    ▅ OpenGL ES 1.0 :本部分提供了对3D的支持。

    ▅ 界面管理工具(Surface Management):本部分提供了对管理显示子系统等功能。

    ▅ SQLite:一个通用的嵌入式数据库

    ▅ WebKit:网络浏览器的核心

    ▅ FreeType:位图和矢量字体的功能。

    Android 的各种库一般是以系统中间件的形式提供的,它们均有的一个显著特点就是与移动设备的平台的应用密切相关。

    Android 运行环境主要指的虚拟机技术——Dalvik。Dalvik虚拟机和一般JAVA虚拟机(Java VM)不同,它执行的不是JAVA标准的字节码(bytecode )而是Dalvik可执行格式(.dex)中执行文件。在执行的过程中,每一个应用程序即一个进程(Linux的一个Process)。    二者最大的区别在于Java VM是以基于栈的虚拟机(Stack-based),而Dalvik是基于寄存器的虚拟机(Register-based)。显然,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。

    ● 应用程序框架(Application Framework)

    Android的应用程序框架为应用程序层的开发者提供APIs,它实际上是一个应用程序的框架。由于上层的应用程序是以JAVA构建的,因此本层次提供的首先包含了UI程序中所需要的各种控件:

    例如: Views (视图组件)包括 lists(列表), grids(栅格), text boxes(文本框), buttons(按钮)等。甚至一个嵌入式的Web浏览器。

    一个Andoid的应用程序可以利用应用程序框架中的以下几个部分:

    • Activity (活动)
    • Broadcast Intent Receiver (广播意图接收者)
    • Service (服务)
    • Content Provider (内容提供者,让开发者在不同应用程序之间共享数据。)

    应用程序框架也包括一些高级管理(Manager):

    • Activity Manager:控制界面的生命周期,包括管理活动(Activity)栈。
    • Notification Manager:提供一贯的非侵入式的机制来通知用户(例如:当你正在玩游戏时有人给你发短信,通知不会终止你的游戏,你会听到一个声音提示)。
    • Resource Manager:支持非代码资源,如字符串和图形被外部化
    • Window Maganger、Package Mananger、Power Manager、Service Manager等等

    ● 应用程序(Application)

    Android的应用程序主要是用户界面(User Interface)方面的,通常以JAVA程序编写,其中还可以包含各种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个APK包。Android本身提供了主屏幕(Home),联系人(Contact),电话(Phone),浏览器(Browers)等众多的核心应用。同时应用程序的开发者还可以使用应用程序框架层的API实现自己的程序。这也是Android开源的巨大潜力的体现。

    开发者需要知道的Android库

    核心Android开发库

    所以在这个列表中,将帮助开发者了解哪些是可用的核心API。所有的Android设备将提供至少这些API支持:

    android.util:核心工具包中包含底层类,字符串格式化和XML解析工具、底层类​​。

    android.os:操作系统包提供了访问基本的操作系统服务,如消息传递、进程间通信、时钟功能和调试。

    android.graphics:图形API提供了支持画布、颜色和绘制图元的低级别的图形类并且支持绘制画布。

    android.text:用于显示和解析文本的文本处理工具。

    android.database:在数据库处理游标时提供底层类支持。

    android.content:content API管理数据访问,提供服务来管理资源、内容提供者(content provider)和包。

    android.view:视图是核心的用户接口类。所有用户界面元素使用的是一系列视图,以构成用户交互的组件。

    android.widget**:内置在View包内,小部件类是“这里是我们前面创建的”用户界面元素,可以在自己的应用程序中使用。包括列表、按钮和布局。

    com.google.android.maps:高级的API,它提供了访问本地地图控件,可以在自己的应用程序中使用。包括MapView的控制、用于标注和控制您的嵌入式地图的叠加以及MapController类。

    android.app:一个高层次的包,允许访问应用程序模型。该应用程序包包括Activity和Service的API等是Android应用程序的基础。

    android.provider:方便开发者访问标准的内容提供者(比如联系人数据库),provider包提供类给开发者访问标准的数据库。

    android.telephony:telephony API让开发者直接接触电话底层,开发者可以打电话、接电话、显示通话记录、通话状态和短消息。

    android.webkit:WebKit的软件包功能的API与基于Web的内容的工作,其中包括一个WebView控件在您的活动中嵌入浏览器和cookie管理器。

    同样,你刚才看到的是Android的库可以帮助您快速构建应用程序的简化列表!除了在Android API,Android栈还包括一组的C/C++库,可通过应用程序框架发布出来。它们包括:

    OpenGL:用于支持基于OpenGL ES1.0 API、3D图形库。

    FreeType**:这支持位图和矢量字体渲染。

    SGL**:用于提供2D图形引擎的核心库。

    ibc:标准C库,为基于Linux的嵌入式设备进行了优化。

    SQLite:用于存储应用程序数据的轻量级的关系数据库引擎。

    SSL:支持使用安全套接字层加密协议进行安全互联网通信。

    注意:到此,要介绍的就太多了,我将在这里结束。只是多一个部分,你可以做自己的事情。如果你不能看完整个帖子,可以将其加入书签,以备将来参考。因为,这里的大多数内容不会有太大变化!

    高级Android开发库

    我们所看到的核心库,到目前为止提供所有开发Android应用程序需要的功能。然而钻研高级API将会使用更高级的功能并带来额外的乐趣。

    尽管如此,值得注意的是,由于Android希望针对移动硬件有更广泛的适应性,因此要注意下列API适用的场合和以及使用时装置是否具备条件。

    android.location:基于位置的服务的API,使应用程序访问设备的当前物理位置。基于位置的服务提供通用的访问使用任何位置固定的硬件或技术设备上可用的位置信息。

    android.media:媒体API提供了用于播放音频和视频媒体文件,包括流媒体和录制的支持。

    android.opengl:Android提供使用的OpenGL ES API,你可以用它来创建动态3D用户界面为你的应用程序的强大的3D渲染引擎。

    android.hardware:如有可能,硬件API公开的传感器硬件,包括摄像头、加速计和指南针传感器。

    android.bluetooth,android.net.wifi,android.telephony:Android也提供了硬件平台,包括蓝牙、Wi-Fi和电话硬件的低级别的访问。

    展开全文
  • Android OS体系结构详解

    千次阅读 2016-02-21 01:22:55
    Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户... Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Ker

    Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。


    架构详解

      下面自底向上分析各层:
    1、Linux Kernel

      Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。

      如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。

      如果你只是做应用开发,就不需要深入了解Linux Kernel层。
    2、Android Runtime

      Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。

      大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。 两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以将 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。

      Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。
    3、Libraries

      Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库:

      系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备

      媒体库——基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG

      界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层

      LibWebCore——新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图

      SGL——基本的2D图形引擎

      3D库——基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅

      FreeType ——位图和矢量字体渲染

      SQLite ——所有应用程序都可以使用的强大而轻量级的关系数据库引擎
    4、Application Framework

      通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。

      开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。

      所有的应用程序其实是一组服务和系统,包括:

      视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器

      内容提供者(Content Providers)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据

      资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件

      通知管理器(Notification Manager)——使所有的应用程序能够在状态栏显示自定义警告

      活动管理器(Activity Manager)——管理应用程序生命周期,提供通用的导航回退功能
    5、Applications

      Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发!

      从上面我们知道Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆叠(Software Stack),或称为「软件叠层架构」,叠层主要分成三层:操作系统、中间件、应用程序。

    Android核心模块及相关技术

    Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。根据Android的软件框图,其软件层次结构自下而上分为以下几个层次:

      第一、操作系统层(OS)

      第二、各种库(Libraries)和Android 运行环境(RunTime)

      第三、应用程序框架(Application Framework)

      第四、应用程序(Application)

      以下分别介绍Andoid各个层次的软件的重点及其相关技术:

      操作系统层(OS)

      Android使用Linux2.6作为操作系统,Linux2.6是一种标准的技术,Linux也是一个开放的操作系统。Android对操作系统的使用包括核心和驱动程序两部分,Android的Linux核心为标准的Linux2.6内核,Android更多的是需要一些与移动设备相关的驱动程序。主要的驱动如下所示:

      显示驱动(Display Driver):常用基于Linux的帧缓冲(Frame. Buffer)驱动。

      Flash内存驱动(Flash Memory Driver)

      照相机驱动(Camera Driver):常用基于Linux的v4l(Video for )驱动。

      音频驱动(Audio Driver):常用基于ALSA(Advanced Linux Sound Architecture,高级Linux声音体系)驱动。

      WiFi驱动(Camera Driver):基于IEEE 802.11标准的驱动程序

      键盘驱动(KeyBoard Driver)

      蓝牙驱动(Bluetooth Driver)

      Binder IPC驱动: Andoid一个特殊的驱动程序,具有单独的设备节点,提供进程间通讯的功能。

      Power Management(能源管理)

      各种库(Libraries)和Android 运行环境(RunTime)

      本层次对应一般嵌入式系统,相当于中间件层次。Android的本层次分成两个部分一个是各种库,另一个是Android 运行环境。本层的内容大多是使用C++实现的。

      在其中,各种库包括:

      ▅ C库 :C语言的标准库,这也是系统中一个最为底层的库,C库是通过Linux的系统调用来实现。

      ▅ 多媒体框架(MediaFrameword):这部分内容是Android多媒体的核心部分,基于PacketVideo(即PV)的OpenCORE,从功能上本库一共分为两大部分,一个部分是音频、视频的回放(PlayBack),另一部分是则是音视频的纪录(Recorder)。

      ▅ SGL:2D图像引擎。

      ▅ SSL:即Secure Socket Layer位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

      ▅ OpenGL ES 1.0 :本部分提供了对3D的支持。

      ▅ 界面管理工具(Surface Management):本部分提供了对管理显示子系统等功能。

      ▅ SQLite:一个通用的嵌入式数据库

      ▅ WebKit:网络浏览器的核心

      ▅ FreeType:位图和矢量字体的功能。

      Android 的各种库一般是以系统中间件的形式提供的,它们均有的一个显著特点就是与移动设备的平台的应用密切相关。

      Android 运行环境主要指的虚拟机技术——Dalvik。 Dalvik虚拟机和一般JAVA虚拟机(Java VM)不同,它执行的不是JAVA标准的字节码(bytecode)而是Dalvik可执行格式(.dex)中执行文件。在执行的过程中,每一个应用程序 即一个进程(Linux的一个Process)。二者最大的区别在于Java VM是以基于栈的虚拟机(Stack-based),而Dalvik是基于寄存器的虚拟机(Register-based)。显然,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。

      应用程序框架(Application Framework)

      Android的应用程序框架为应用程序层的开发者提供APIs,它实际上是一个应用程序的框架。由于上层的应用程序是以JAVA构建的,因此本层次提供的首先包含了UI程序中所需要的各种控件:

      例如:Views (视图组件)包括 lists(列表), grids(栅格), text boxes(文本框), buttons(按钮)等。甚至一个嵌入式的Web浏览器。

      一个Andoid的应用程序可以利用应用程序框架中的以下几个部分:

      Activity (活动)

      Broadcast Intent Receiver (广播意图接收者)

      Service (服务)

      Content Provider (内容提供者)

      应用程序(Application)

      Android的应用程序主要是用户界面(User Interface)方面的,通常以JAVA程序编 写,其中还可以包含各种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个APK包。Android本身提供了主屏幕 (Home),联系人(Contact),电话(Phone),浏览器(Browers)等众多的核心应用。同时应用程序的开发者还可以使用应用程序框架 层的API实现自己的程序。这也是Android开源的巨大潜力的体现。

    展开全文
  • android.os.Build 常用常量

    万次阅读 2017-12-27 19:42:34
    android.os.Build常量

    在做项目的时候,经常需要采集一些设备信息,但又不经常用,所以有时候会查询需求满足的接口是哪个,所以周末就针对此整理了一下

    Build.ID; //Either a changelist number, or a label like "M4-rc20".
    Build.DISPLAY; //A build ID string meant for displaying to the user(设置-关于手机-版本号)
    Build.PRODUCT; //The name of the overall product.(整个产品的名称)
    Build.DEVICE; //The name of the industrial design.(工业设计名称--设备名称)
    Build.BOARD; //The name of the underlying board, like "goldfish".(主板名称)
    Build.MANUFACTURER; //The manufacturer of the product/hardware.(硬件制造商)
    Build.BRAND; //The consumer-visible brand with which the product/hardware will be associated, if any.(设备品牌)
    Build.MODEL; //The end-user-visible name for the end product.(终端用户可见的设备型号)
    Build.BOOTLOADER; //The system bootloader version number.(系统程序的版本号)
    Build.HARDWARE; // The name of the hardware (from the kernel command line or /proc).(硬件名称)
    Build.SERIAL; // A hardware serial number, if available.Alphanumeric only, case-insensitive.(硬件序列号)
    Build.TYPE; //The type of build, like "user" or "eng".(设备版本类型)
    Build.TAGS; //Comma-separated tags describing the build, like "unsigned,debug".(设备标签,未签名/测试)
    /** A string that uniquely identifies this build.  Do not attempt to parse this value.
             * 设备唯一标示,是由build的多个设备信息拼接而成
             * getString("ro.product.brand") + '/' +//BRAND
             * getString("ro.product.name") + '/' +//PRODUCT
             * getString("ro.product.device") + ':' +//DEVICE
             * getString("ro.build.version.release") + '/' +//VERSION.RELEASE
             * getString("ro.build.id") + '/' +//ID
             * getString("ro.build.version.incremental") + ':' +//VERSION.INCREMENTAL
             * getString("ro.build.type") + '/' +//TYPE
             * getString("ro.build.tags")
             * */
    Build.FINGERPRINT;
    
    // The following properties only make sense for internal engineering builds.
    //主要for工程师调试版本
    Build.HOST;
    Build.USER;
    Build.TIME;
    
    Build.VERSION.INCREMENTAL; //The internal value used by the underlying source control to represent this build.E.g., a perforce changelist number or a git hash.
    Build.VERSION.SDK_INT; //The user-visible SDK version of the framework;
      * its possible  values are defined in {@link Build.VERSION_CODES}.
    Build.VERSION.CODENAME //The current development codename, or the string "REL" if this is a release build.
    Build.VERSION.RELEASE; //The user-visible version string.  E.g., "1.0" or "3.4b5". (Android SDK version)
    Build.VERSION.BASE_OS; //The base OS build the product is based on.

    补充,Build.TYPE返回结果表示:

    user表示用户版,有限的访问权限,适合product环境;adb默认是关闭的
    userdebug,和user类似,具有root和debug权限;
    eng 表示工程师版, 可调试;adb默认是打开的

    看英文描述有时候并不能确定返回的值是否满足自己的需求,故针对此写了测试用例,查看了返回结果,针对结果看描述就会更清楚其表达

    key google nexus5 小米6 原生系统 小米3 MIUI系统
    android.os.Build#ID M4B30Z OPR1.170623.027 MMB29M
    android.os.Build#DISPLAY M4B30Z sagit-eng 8.0.0 OPR1.170623.027 2017.12.20_aosp-debug test-keys MMB29M test-keys
    android.os.Build#PRODUCT hammerhead sagit cancro
    android.os.Build#DEVICE hammerhead sagit cancro
    android.os.Build#BOARD hammerhead msm8998 MSM8974
    android.os.Build#MANUFACTURER LGE Xiaomi Xiaomi
    android.os.Build#BRAND google Xiaomi Xiaomi
    android.os.Build#MODEL Nexus 5 MI 6 MI 3W
    android.os.Build#BOOTLOADER HHZ20h unknown unknown
    android.os.Build#HARDWARE hammerhead qcom qcom
    android.os.Build#SERIAL 037abc3e09318c78 c3b4ba0d 584db4
    android.os.Build#TYPE user eng user
    android.os.Build#TAGS release-keys test-keys test-keys
    android.os.Build#FINGERPRINT google/hammerhead/hammerhead:6.0.1/M4B30Z/3437181:user/release-keys Xiaomi/sagit/sagit:8.0.0/OPR1.170623.027/2017.12.20_aosp-debug:eng/test-keys Xiaomi/cancro/cancro:6.0.1/MMB29M/7.12.16:user/test-keys
    android.os.Build#HOST wpdu6.hot.corp.google.com c3-miui-sdk-fe01.bj c3-miui-ota-bd122.bj
    android.os.Build#USER android-build work builder
    android.os.Build#TIME 478203422000 1513737970000 1513410304000
    android.os.Build#VERSION.INCREMENTAL 3437181 2017.12.20_aosp-debug 7.12.16
    android.os.Build#VERSION.SDK_INT 23 26 23
    android.os.Build#VERSION.CODENAME REL REL REL
    android.os.Build#VERSION.RELEASE 6.0.1 8.0.0 6.0.1
    android.os.Build#VERSION.BASE_OS

    上述数据源log打印数据如下

    12-23 12:56:32.511 I/android.os.Build#ID: (29436): M4B30Z
    12-23 12:56:32.511 I/android.os.Build#DISPLAY: (29436): M4B30Z
    12-23 12:56:32.511 I/android.os.Build#PRODUCT: (29436): hammerhead
    12-23 12:56:32.511 I/android.os.Build#DEVICE: (29436): hammerhead
    12-23 12:56:32.511 I/android.os.Build#BOARD: (29436): hammerhead
    12-23 12:56:32.511 I/android.os.Build#MANUFACTURER: (29436): LGE
    12-23 12:56:32.511 I/android.os.Build#BRAND: (29436): google
    12-23 12:56:32.511 I/android.os.Build#MODEL: (29436): Nexus 5
    12-23 12:56:32.511 I/android.os.Build#BOOTLOADER: (29436): HHZ20h
    12-23 12:56:32.511 I/android.os.Build#HARDWARE: (29436): hammerhead
    12-23 12:56:32.511 I/android.os.Build#SERIAL: (29436): 037abc3e09318c78
    12-23 12:56:32.511 I/android.os.Build#TYPE: (29436): user
    12-23 12:56:32.511 I/android.os.Build#TAGS: (29436): release-keys
    12-23 12:56:32.511 I/android.os.Build#FINGERPRINT: (29436): google/hammerhead/hammerhead:6.0.1/M4B30Z/3437181:user/release-keys
    12-23 12:56:32.511 I/android.os.Build#HOST: (29436): wpdu6.hot.corp.google.com
    12-23 12:56:32.511 I/android.os.Build#USER: (29436): android-build
    12-23 12:56:32.512 I/android.os.Build#TIME: (29436): 1478203422000
    12-23 12:56:32.512 I/android.os.Build#VERSION.INCREMENTAL: (29436): 3437181
    12-23 12:56:32.512 I/android.os.Build#VERSION.SDK_INT: (29436): 23
    12-23 12:56:32.512 I/android.os.Build#VERSION.CODENAME: (29436): REL
    12-23 12:56:32.512 I/android.os.Build#VERSION.RELEASE: (29436): 6.0.1
    12-23 05:18:00.959 I/android.os.Build#ID: (10108): OPR1.170623.027
    12-23 05:18:00.959 I/android.os.Build#DISPLAY: (10108): sagit-eng 8.0.0 OPR1.170623.027 2017.12.20_aosp-debug test-keys
    12-23 05:18:00.959 I/android.os.Build#PRODUCT: (10108): sagit
    12-23 05:18:00.959 I/android.os.Build#DEVICE: (10108): sagit
    12-23 05:18:00.960 I/android.os.Build#BOARD: (10108): msm8998
    12-23 05:18:00.960 I/android.os.Build#MANUFACTURER: (10108): Xiaomi
    12-23 05:18:00.960 I/android.os.Build#BRAND: (10108): Xiaomi
    12-23 05:18:00.960 I/android.os.Build#MODEL: (10108): MI 6
    12-23 05:18:00.960 I/android.os.Build#BOOTLOADER: (10108): unknown
    12-23 05:18:00.960 I/android.os.Build#HARDWARE: (10108): qcom
    12-23 05:18:00.960 I/android.os.Build#SERIAL: (10108): c3b4ba0d
    12-23 05:18:00.960 I/android.os.Build#TYPE: (10108): eng
    12-23 05:18:00.960 I/android.os.Build#TAGS: (10108): test-keys
    12-23 05:18:00.960 I/android.os.Build#FINGERPRINT: (10108): Xiaomi/sagit/sagit:8.0.0/OPR1.170623.027/2017.12.20_aosp-debug:eng/test-keys
    12-23 05:18:00.960 I/android.os.Build#HOST: (10108): c3-miui-sdk-fe01.bj
    12-23 05:18:00.960 I/android.os.Build#USER: (10108): work
    12-23 05:18:00.960 I/android.os.Build#TIME: (10108): 1513737970000
    12-23 05:18:00.960 I/android.os.Build#VERSION.INCREMENTAL: (10108): 2017.12.20_aosp-debug
    12-23 05:18:00.960 I/android.os.Build#VERSION.SDK_INT: (10108): 26
    12-23 05:18:00.960 I/android.os.Build#VERSION.CODENAME: (10108): REL
    12-23 05:18:00.960 I/android.os.Build#VERSION.RELEASE: (10108): 8.0.0
    12-23 05:18:00.960 I/android.os.Build#VERSION.BASE_OS: (10108): 
    12-23 12:55:05.725 I/android.os.Build#ID: (16606): MMB29M
    12-23 12:55:05.725 I/android.os.Build#DISPLAY: (16606): MMB29M test-keys
    12-23 12:55:05.725 I/android.os.Build#PRODUCT: (16606): cancro
    12-23 12:55:05.725 I/android.os.Build#DEVICE: (16606): cancro
    12-23 12:55:05.725 I/android.os.Build#BOARD: (16606): MSM8974
    12-23 12:55:05.725 I/android.os.Build#MANUFACTURER: (16606): Xiaomi
    12-23 12:55:05.725 I/android.os.Build#BRAND: (16606): Xiaomi
    12-23 12:55:05.725 I/android.os.Build#MODEL: (16606): MI 3W
    12-23 12:55:05.725 I/android.os.Build#BOOTLOADER: (16606): unknown
    12-23 12:55:05.725 I/android.os.Build#HARDWARE: (16606): qcom
    12-23 12:55:05.725 I/android.os.Build#SERIAL: (16606): 584db4
    12-23 12:55:05.725 I/android.os.Build#TYPE: (16606): user
    12-23 12:55:05.725 I/android.os.Build#TAGS: (16606): test-keys
    12-23 12:55:05.725 I/android.os.Build#FINGERPRINT: (16606): Xiaomi/cancro/cancro:6.0.1/MMB29M/7.12.16:user/test-keys
    12-23 12:55:05.725 I/android.os.Build#HOST: (16606): c3-miui-ota-bd122.bj
    12-23 12:55:05.725 I/android.os.Build#USER: (16606): builder
    12-23 12:55:05.725 I/android.os.Build#TIME: (16606): 1513410304000
    12-23 12:55:05.727 I/android.os.Build#VERSION.INCREMENTAL: (16606): 7.12.16
    12-23 12:55:05.727 I/android.os.Build#VERSION.SDK_INT: (16606): 23
    12-23 12:55:05.727 I/android.os.Build#VERSION.CODENAME: (16606): REL
    12-23 12:55:05.727 I/android.os.Build#VERSION.RELEASE: (16606): 6.0.1
    展开全文
  • 转载自:...   android.os.Build  Java代码  Build.BOARD // 主板  Build.BRAND // android系统定制商  Build.CPU_ABI // cpu指令集  Build.DEVICE // 设备参数  Build.DIS

    转载自:http://yuanzhifei89.iteye.com/blog/1168544

     

    android.os.Build 

    Java代码  收藏代码
    1. Build.BOARD // 主板  
    2. Build.BRAND // android系统定制商  
    3. Build.CPU_ABI // cpu指令集  
    4. Build.DEVICE // 设备参数  
    5. Build.DISPLAY // 显示屏参数  
    6. Build.FINGERPRINT // 硬件名称  
    7. Build.HOST  
    8. Build.ID // 修订版本列表  
    9. Build.MANUFACTURER // 硬件制造商  
    10. Build.MODEL // 版本  
    11. Build.PRODUCT // 手机制造商  
    12. Build.TAGS // 描述build的标签  
    13. Build.TIME  
    14. Build.TYPE // builder类型  
    15. Build.USER  
    16.   
    17. // 运行结果  
    18. /* 
    19. board: unknown 
    20. brand: generic 
    21. cpu abi: armeabi 
    22. device: generic 
    23. display: google_sdk-eng 2.1 ERD79 22607 test-keys 
    24. finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys 
    25. host: genki.mtv.corp.google.com 
    26. id: ERD79 
    27. manufacturer: unknown 
    28. model: google_sdk 
    29. product: google_sdk 
    30. tags: test-keys 
    31. time: 1261185425000 
    32. type: eng 
    33. user: android-build 
    34. */  




    Build.VERSION 

    Java代码  收藏代码
    1. // 当前开发代号  
    2. Build.VERSION.CODENAME  
    3. // 源码控制版本号  
    4. Build.VERSION.INCREMENTAL  
    5. // 版本字符串  
    6. Build.VERSION.RELEASE  
    7. // 版本号  
    8. Build.VERSION.SDK  
    9. // 版本号  
    10. Build.VERSION.SDK_INT  
    11.   
    12. // 结果  
    13. /* 
    14. REL 
    15. 22607 
    16. 2.1 
    17. 7 
    18. 7 
    19. */  
    20.   
    21. // Build.VERSION.SDK_INT可与switch搭配用  
    22. switch (Build.VERSION.SDK_INT) {  
    23. case Build.VERSION_CODES.BASE: // 1.0  
    24.     break;  
    25.       
    26. case Build.VERSION_CODES.BASE_1_1: // 1.1  
    27.     break;  
    28.       
    29. case Build.VERSION_CODES.CUPCAKE: // 1.5  
    30.     break;  
    31.       
    32. case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version  
    33.     break;  
    34.       
    35. case Build.VERSION_CODES.DONUT: // 1.6  
    36.     break;  
    37.       
    38. case Build.VERSION_CODES.ECLAIR: // 2.0  
    39.     break;  
    40.       
    41. case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1  
    42.     break;  
    43.       
    44. case Build.VERSION_CODES.ECLAIR_MR1: // 2.1  
    45.     break;  
    46. }  




    android.os.SystemClock 
    文档中对System.currentTimeMillis()进行了相应的描述,就是说它不适合用在需要时间间隔的地方,如Thread.sleep, Object.wait等,因为可以通过System.setCurrentTimeMillis来改变它的值。 

    要用时间间隔,推荐使用SystemClock中的相关方法。 

    Java代码  收藏代码
    1. SystemClock.currentThreadTimeMillis(); // 在当前线程中已运行的时间  
    2. SystemClock.elapsedRealtime(); // 从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内)  
    3. SystemClock.uptimeMillis(); // 从开机到现在的毫秒书(手机睡眠的时间不包括在内)  
    4. SystemClock.sleep(100); // 类似Thread.sleep(100);但是该方法会忽略InterruptedException  
    5. SystemClock.setCurrentTimeMillis(1000); // 设置时钟的时间,和System.setCurrentTimeMillis类似  
    6.   
    7. // 时间间隔  
    8. long timeInterval = SystemClock.uptimeMillis() - lastTime;  
    9. // do something with timeInterval  




    android.os.PowerManager 
    PowerManager的flag的意思: 

    Java代码  收藏代码
    1. // PowerManager的一般用法,请求和释放唤醒锁  
    2. PowerManager powerMgr = (PowerManager)  
    3.         getSystemService(Context.POWER_SERVICE);  
    4. int flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;  
    5. WakeLock wakeLock = powerMgr.newWakeLock(flags, "for debug purpose tag");  
    6. wakeLock.acquire(); // 获取唤醒锁  
    7. wakeLock.release(); // 释放唤醒锁  
    8. // 在游戏中,会将acquire放在onResume中;将release放在onPause,这样在程序运行时就可以保持屏幕常量;在程序处在后台时,就恢复原来的设置。  
    9.   
    10.   
    11. // PowerManager的其它api的使用  
    12. powerMgr.goToSleep(SystemClock.uptimeMillis() + 100); // 100ms后进入睡眠  
    13. powerMgr.isScreenOn(); // 屏幕是否亮着  
    14. powerMgr.userActivity(SystemClock.uptimeMillis()+100true); // 相当于按home键,会引起从睡眠激活  
    15.   
    16.   
    17. // WakeLock的其它api  
    18. wakeLock.acquire(1000); // 获取唤醒锁,并在1000ms后释放  
    19. wakeLock.isHeld(); // 当前是否持有唤醒锁  
    20. // 是否使用引用计数,默认是启用的。引用计数应该就是第一次请求为1,第二次加1,再一次再加1。  
    21. // 在释放时,只有引用计数为0时才被视为完全释放(所以要多次调用release)  
    22. wakeLock.setReferenceCounted(true);   
    展开全文
  • 全面认识Android OS

    千次阅读 多人点赞 2019-06-25 02:13:48
    缘起前几天CSDN有篇讲鸿蒙OS的文章,我觉得它是最近讨论自主开发OS的文章里很中肯的一篇了(链接不给了,.....)。我曾经在2012年介绍过Android OS的情况...
  • Android OS历史版本

    千次阅读 2020-05-02 14:05:40
    文章共约2000字,阅读需要约5分钟说起Android OS,大家都知道是Google的Android,但是Google却不是Android的“亲生父亲”。最初的Android OS,由酷爱机器人的Andy Rubin(安迪鲁宾)所研发。因为酷爱机器人,所以...
  • Android os体系架构

    千次阅读 2018-05-07 19:28:20
    可以学习刘望舒的 Android系统架构与系统源码目录下面文章转自:https://blog.csdn.net/itluochen/article/details/52583442OS体系结构介绍:第一、操作系统层(OS)第二、各种库(Libraries)和Android 运行环境...
  • android.os.Build类是一个非常方便使用的类,不需要任何权限。 说明如下: android.os.Build.BOARD:获取设备基板名称 android.os.Build.BOOTLOADER:获取设备引导程序版本号 android.os.Build.BRAND:获取设备品牌 ...
  • Android_android studio导入os

    千次阅读 2016-09-28 17:16:02
    os库不是基于java层的,所以不能放在libs目录下 将项目视图切换到 project 在main文件夹下新建一个 jniLibs 将需要的os动态库文件添加到 jniLibs
  • 2019 2月主流手机系统版本

    千次阅读 2019-02-26 11:57:58
    Android 5.0.2 iPhone OS 10.1.1 iPhone OS 11.0.3 iPhone OS 9.3.2 Android 4.4.4 iPhone OS 12.1.1 iPhone OS 10.0.2 iPhone OS 11.2.2 iPhone OS 10.3.1 iPhone OS 9.1 iPhone OS 11.0 ...
  • android 使用.os文件 导入第三方库

    千次阅读 2018-11-05 11:08:07
    1. 如果是使用android studio,则把.os文件拷贝到src/main/jniLibs/的x86或armeabi-v7a文件夹中 2.使用os文件接口的代码路径是特定的,不能改变
  • Androidandroid.os.DeadObjectException原因

    千次阅读 2016-10-24 11:11:31
    问题: 今天看到客户的手机出现了 ...android.os.DeadObjectException 07-13 18:28:45.398: W/System.err(32272): at android.os.BinderProxy.transact(Native Method) 原因: 我们项目有2个进程 由于re
  • android.os.Build类中,包括了这样的一些信息。我们可以直接调用 而不需要添加任何的权限和方法。 android.os.Build.BOARD:获取设备(主板)基板名称 android.os.Build.BOOTLOADER:获取设备引导程序版本号 ...
  • android.os.Build类字段含义

    千次阅读 2016-12-09 17:02:30
    android.os.Build类包括了这样的一些信息。我们可以直接调用 而不需要添加任何的权限和方法。 android.os.Build.BOARD:获取设备基板名称 android.os.Build.BOOTLOADER:获取设备引导程序版本号 android.os.Build....
  • android.os.Build详解

    千次阅读 2018-08-13 13:59:38
    android.os.Build是安卓的一个类,获取安卓的一些系统信息 android.os.Build.VERSION.RELEASE 获取当前系统版本号字符串:4.4.2 android.os.Build.MODEL 获取手机型号 android.os.Build.VERSION.SDK_INT 获取当前...
  • 我们需要将layoutlib.jar导入Android Studio,就可以通过import android.os.SystemProperties引入SystemProperties 找到layoutlib.jar包 #该jar包在Sdk/platform/android-XX/data下 cd Android/Sdk/platforms/...
  • 其中android os Process killProcess myPid 他们是路径间的关系么 ,还是子类和父类的关系,还是对象和方法的关系,我有点分不清,求指点,谢谢
  • Android Studio中,如果代码有错误,红色波浪线提示,光标定位到错误代码行时,可以看到代码错误原因描述, 点击旁边的图标,或者用快捷键Alt + Enter,就可以看到修复这个问题的提示, Add exception to method ...
  • String phoneInfo = "BOARD: " + android.os.Build.BOARD; phoneInfo += ", BOOTLOADER: " + android.os.Build.BOOTLOADER; //BRAND 运营商 phoneInfo += ", BRAND: " + android.os.Build.BRAND; phoneInfo
  • 解决android.os.DeadObjectException问题

    千次阅读 2016-08-05 22:37:55
    解决办法: 在AndroidManifest.xml文件的application标签中,添加android:hardwareAccelerated="false"(禁用硬件加速)。
1 2 3 4 5 ... 20
收藏数 358,066
精华内容 143,226
关键字:

android os