>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19738 个阅读者 刷新本主题
 * 贴子主题:  Android平台概述 回复文章 点赞(0)  收藏  
作者:javathinker    发表时间:2020-03-31 13:59:55     消息  查看  搜索  好友  复制  引用

   Android,可能在iphone引入中国之前,对很多人还是相当陌生的。套用一句古话,“既生瑜,何生亮”。那么已经有了iphone,为什么又非得搞一个Android呢。但是假如你对互联网非常敏感,你就会发现第二次浪潮已经来临,这就是以iphone,ipad带领出来移动互联网。我们知道,在传统的桌面PC时代,微软凭借着WINTEl联盟,编造了微软和英特尔帝国。但随着网络的普及,Google凭借搜索引擎一举成为互联网的霸主。虽然现在FaceBook凭着社交互联网大有后来居上之势,但是在互联网领域,微软始终郁郁不得志。那么我们再来观察一下另外一个帝国,苹果公司。苹果向来是不走平常路,在传统PC领域,虽然Wintel联盟占据了绝大部分的市场份额,但是最酷、最小众的PC仍然由苹果来引导。在互联网领域,苹果是彻底的不沾边,但是在具有天才的颠覆意识的乔布斯教主带领下,硬生生的创立了一个新时代,平板电脑时代和移动互联网时代。很幸运的时候,Google在iPhone热卖不到半年的时候,迅速意识到一个划时代的来临。通过悄悄收购了Andy Rubin创建的创业公司,于2007年11月5日,联合其它33家厂商,组成开发手机联盟OHA(Open Handset Alliance),并发布了第一版本的Android开放手机平台。
  

1.0.1 Android平台发展简史  

Andriod原意是机器人,是由Andy Rubin领导的一家创业公司开发的基于Linux平台的开源手机操作系统。经Google收购后,迅速推出多个版本的Android系统平台,如1.0,1.1,1.5、1.6,目前市场机器安装的大部分系统是2.2和2.3,其它像3.0版本主要针对是平板电脑。
  
Android一经推出就受到了业界的热捧,这是因为Android是完全开源的,源代码可以直接下载,这为想进入移动互联网的厂商和开发人员提供了极大的方便,以前像Symbain和WINCE等,厂商想要开发这些产品,需要交钱得到授权,开发人员只能通过厂家提供的开发手册来了解系统。现在一切都可以查看到源码,厂商可以自由定制,程序开发人员也可以更直接的了解底层实现,开发出更好的应用程序。
  
下图是Android与iphone应用开发的一个简单比较列表,从中可以看出,中国优势就是熟悉JAVA的程序员遍地就是,因此开发起Android程序应该是非常顺手。
  
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  
Android整个的发展史可以简述如下:  
  • 2005年Google收购了刚刚成立22个月的Android公司,该公司的创建人是Andy Rubin,标准的说法,它就是一个Geek,从最早在苹果公司到微软公司,接着Danger公司,都开发出超越时代的产品,其中在Danger公司后来被微软收购,生产出kin系统手机。
  • 2007年11月5日开发手机联盟(Open Handset Alliance ,简称OHA)宣布成立。
   点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小  
  • 2007年11月12日发布第一版本Android SDK,并于2008年4月17日举办Android开发竞赛。接着2008年8月28日Android Market 上线,为平台开发者提供软件下载收入分成,极大的推动了程序开发者的参与积极性。
  • 2008年9月23日第一款Android手机上市,通称G1,由T-Mobile运营,以后随着宏达电(HTC)及摩托罗拉(MOTOROLA)全力推进,现在在美国市场占有率已高达40%。
    点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  
目前,Google为Android系统的开发网站是www.android.com,此网站一度被封,现在已解禁。这网站提供了围绕Android开发的SDK,MARKET,SOURCE等。
  
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  
上面是主界面,Google分别为合作者提供了三个入口,针对开发者的Developers和Market入口,以及针对合作伙伴的partner入口。
  
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  
这个界面是针对应用开发者的入口,开发者可以从中获取SDK,Eclipse 插件包,API文档以丰富的实例及讨论文章。
  
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  
Android Market主要为开发者开发出的应用APP提供一个出售的平台,开发者可以通过这个网站出售自己的应用,并与GOOGLE获取分成。
  
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  
这个界面是Android系统源码网站,需要对内核进行开发或者查看的可以使用git工具进行下载。
  

1.0.2 手机平台开发模式及Android 平台特性

   手机作为一种消费产品,从最初的高档产品到进入到普罗大众手中,时间并不长,现在在中国,几乎可以说是人手一台,而且还有很多专门针对特定人群的,如家里的老人使用老人手机、小孩使用小孩手机。针对手机的开发也经历了如下几个过程:  
  • 传统手机开发,传统手机开发通常完全由手机厂商提供,手机厂商向开发电视一样提供给用户一个封闭系统,用户通常只能使用里面的功能,不能参与定制自己想要的功能。
  • 半开放式手机开发,在这种场景下,厂商依然制造独有手机系统,但是会为第三方提供应用开发接口,比喻基于J2ME、BREW等。这当中随着基于MTK系统的中国山寨手机的蓬勃发展,杭州斯凯网络公司www.sky-mobi.com是非常有名的。
  • 全开放式手机开发,因为半开发模式下,还需要针对不同的厂商进行定制开发,因此对开发者还是有相当多的束缚。全开放模式下,各个厂商在统一开放的平台上进行手机操作系统开发,第三方应用也是基于统一开放的平台进行开发。因此围绕开发平台形成了一个生态系统。这个也是目前各大公司非常强调的,没有生态系统,就注定你的手机系统的灭亡,如Norkia的Symbian和HP的WEBOS.
   点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  
  1)工业厂商:Android 操作系统是开源的,大部分源码基于Apache 2.0 license,任何人都可根据源码构造一个手机操作系统(基于ARM平台)
  
  2)用户:可根据自己喜好自由安装应用、自由修改定制系统缺省选项、自由定制界面满足个性化需求
  
  3)开发者:可根据源码和SDK开发应用,所有应用没有任何权限限制,可以集成、扩展或者替换系统原有应用。
  
    Android平台是一个开放的系统,本身是基于Linux2.6.24系统进行裁剪的,但是现在发展出来已经不能跟原生态LINUX完全兼容了。因为它是一个庞大的系统,光源码就有8G,所以要想完全吃透也是非常困难的。但是Android采用的是整合思想,不同边界的开发者只需要掌握其中一部分就可以进行开发了。总体上来说,Android平台包括底层的LINUX系统,中间的应用框架系统Framework、虚拟机以及运行在虚拟器之上的应用系统。
  
    Android平台的主要特性:  
  • 应用程序框架支持组件的重用和替换,非常方便
  • 内置了3D,2D开发库,同时支持多种音频、视频和静态图像格式,对一些硬件接口如蓝牙、像机、GPS、指南针、速度计、NFC等都提供了上层丰富接口,便于应用开发
  • 应用部署在Dalvik虚拟机上,这个虚拟机不同于其它虚拟机,在于它是基于寄存器可运行于较慢CPU上,并且对RAM需要也小,系统总共只占有64MB,并且每个线程启动一个虚拟机,而不是一个虚拟器支持多个应用。它是将JAVA的class文件转换成dex文件,因此可以支持J2EE所有的JAVA类库
  • 提供了内置SQLite和Webkit,并且基于Eclipse提供了一个丰富的开发工具包,其中包括模拟器、设计工具、内存及性能分析工具。
   Android平台的基本架构如下图所示:
  
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  
我们从下往上看,Android 平台分为linux kernel、Native libararies、Android Runtime和Application Framework.  
  • Linux Kernel: Android是建立在Linux kernel之上的,但是Android不是一个新的Linux发布版本,像ubuntu那样。它没有视窗系统,也不提供glibc支持,也没有包含全部的linux的工作包,它是基于标准的2.6.24 Kernel之后新开的分支,新增加了Alarm、Ashmem、Binder、Power Managememt、Logger、Kernel Debugger、Low Memory Killer等增强功能
  • Libraries:Android的C/C++库通过应用程序框架为应用提供服务,这些库又分为以下几种:
    1)Bionic LibC,一个来源于BSD专为嵌入式Linux服务的C库,它使用BSD授权,运行代码非常小而快速,但不兼容GLIBC,也不支持所有POSIX特性,因此开发本地JNI代码时需要用Bionic C 进行编译。
  
  2)Function Libraries:基于开源WebKit(http://www.webkit.org)提供了CSS,JavaScript,DOM,AJAX支持,并且也支持单栏和自适应显示。基于PacketVideo OpenCORE 平台提供了标准的视频、音频和图片支持,也内置了一些硬解和软解的插件以支持多种媒体格式,基于FreeType提供了位图和向量字体显示。
  
  3)SQLite:轻量级关系型数据存储引擎,它已经被广泛应用于很多平台。
  
  4)Native Servers Surface flinger,提供了系统范围内的surface “composer”,支持2D/3D
  
  点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  
  Audio Flinger,管理音频输出设备,处理多种音频流转为PCM输出。
  
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  
  5)Hardware Abstraction Libraries(HAL),指得是用户空间的C/C++库,定义了一些公共接口,这些接口由底层驱动进行实现,实现了平台逻辑和应用实现的独立,这样做的好处是避免暴露了驱动的私有实现。  
  • Androd Runtime Android 移植了Apache的JAVA 虚拟器实现,并使用Clean--room方式重新实现了虚拟机Dalvik,Dalvik运行优化过的DEX代码,支持CPU优化的字节码翻译和高效内存利用,也支持一台设备运行多个虚拟机进程,专为JAVA提供了许多核心类实现。大部分JAVA类库均可直接使用,但必须重新编辑,特别是一个第三方库,使用时最好重新编译过。
  • Application FrameWork 开发者通过它可完全可以访问核心应用平台库,它提供了一系统列服务包括Activity,Package,window,Resoure等管理和content provider及View 系统。它也提供了访问硬件接口服务如电话,位置、蓝牙、WIFI、USB等服务
   1.0.3 Android的开发类型
  
  Android是一个开放的系统,不同的开发者针对不同的功能域进行开发,按照参与Android生态系统的三类人员对象可分如下两种:  
  • 手机厂商主要针对是移植开发,移植开发的最终目的是针设计好的硬件系统开发手机软件系统,通常包括相关设备驱动程序的开发,实现Android本地框架中的硬件抽象层接口。
    点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小  
  • 应用开发者主要基于Android提供的应用框架进行应用开发,通常如果应用框架不能满足应用需要,开发者也可以进行系统定制开发,这类开发所需要的技术以Android SDK、Android NDK为基础。
    点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
  

1.0.4 Android的工具

    Android提供了一系统工具用来辅助系统开发,这些工具随SDK一同发布给开发者。如果在Windows 下可以查看这个下载目录下的tools和platform-tools文件夹。
  
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

这些主要的工具包括 :  
  • aapt(Android asset packaging tool),用于建立zip兼容的包,也可以用于将资源编译成二制的assets,它主要用android打包过程。
    点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小  
  • AIDL工具(Android接口描述语言工具),AIDL可以生成进程间接口代码
  • dx工具,用于将.class字节码转换为Android 字节码
  • Android工具是一个脚本,可以可视化创建一个虚拟设备也可以命令行方式创建。为什么要创建一个虚拟设备呢,虚拟设备主要针对不同的targets(如Android 1.5,1.6,2.1等),设置参数用来配置模拟器。
  • Emulator(模拟器),模拟器是一个运行于主机上的程序,模拟器通常与android脚本工具一起使用,首先使用android 创建一个虚拟设备AVD,再用模拟器起动这个虚拟设备。Android开发提供的模拟器功能虽然很强,但有些硬件是不支持的,如呼叫实际来电,USB等。
   点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
      点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小  
  • mksdcard,Sqlite3及Draw-9-patch都是分别用来创建模拟SDK、访问SQLITE数据文件和创建NinePatch图形。
  • ADB是平台调试工具,当一个模拟器起动之后,可以使用ADB登陆到这个系统的shell.Adb 可以安装卸载软件,也可以将本地文件上传到模拟器也可以从模拟器下载文件。
    点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小  
  • 其它像DDMS,Hierachy view 等工具分别提供了调试监视服务和层级优化工具。
----------------------------
原文链接:https://blog.51cto.com/acreep/643987

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-04-08 10:07:40 重新编辑]
  Java面向对象编程-->面向对象开发方法概述之开发思想(上)
  JavaWeb开发-->Web运作原理(Ⅳ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->用Spring整合CXF发布Web服务
  精通Spring-->Vue Router路由管理器
  Vue3开发-->Vue指令
  android webView js方法和java 方法交互-android,unity3d
  android异步更新UI
  在Window中下载Android源代码的步骤
  实用程序:android 处理图片工具
  启动和运用Android VNC Server
  Android在SDcard建文件夹(在Android中移动文件必用)
  Android Lint分类及常见错误
  UI渲染优化
  Android 自定义九宫格手势锁
  自定义ViewGroup和FrameLayout实现轮播图(包括底部小圆点)
  Android 碎片(Fragment)
  Android 应用程序组件
  MVVM 架构与数据绑定库
  Appbarlayout+Recycleview滑动效果颜色渐变
  在腾讯面试Android技术的经历
  更多...
 IPIP: 已设置保密
楼主      
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。