⑴ android简介
Android介绍
HTC G1操作界面Android 是Google开发的基于linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序 —— 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google与开放手机联盟合作开发了 Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和 T-Mobile 在内的 30 多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
Android 作为谷歌企业战略的重要组成部分,将进一步推进"随时随地为每个人提供信息"这一企业目标的实现。我们发现,全球为数众多的移动电话用户从未使用过任何基于 Android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。
开放手机联盟的成立和 Android 的推出是对现状的重大改变,在带来初步效益之前,还需要不小的耐心和高昂的投入。但是,我们认为全球移动用户从中能获得的潜在利益是值得付出这些努力的。如果你也是一个开发者,并对我们的想法感兴趣,就请再给我们一星期的时间,届时谷歌便能提供 SDK 了。如果你是一名移动用户,只需再等一段时间,我们的一些合作伙伴计划在 2008 年下半年推出基于 Android 平台的电话产品。如果你已经拥有一部你了解并喜爱的电话,请登录 mobile.google.com ,确保你已经安装谷歌手机地图、Gmail 以及其他一些专为你的手机开发的精彩应用。谷歌将继续努力,让这些服务变得更好,同时也将添加更有吸引力的特性、应用和服务。
[编辑本段]Android团队成员
白色版HTC G1Android平台的研发队伍阵容强大,包括Google、HTC(宏达电)、PHILIPS、T-Mobile、高通、魅族、摩托罗拉、三星、LG以及中国移动在内的34家企业,都将基于该平台开发手机的新型业务,应用之间的通用性和互联性将在最大程度上得到保持。“开放手机联盟”表示,Android平台可以促使移动设备的创新,让用户体验到最优越的移动服务,同时,开发商也将得到一个新的开放级别,更方便的进行协同合作,从而保障新型移动设备的研发速度。
34家企业的加盟,也将大大降低新型手机设备的研发成本,完全整合的“全移动功能性产品”成为“开放手机联盟”的最终目标。
这34家企业中并不包含把持Symbian的诺基亚,以及凭借着iPhone风光正在的苹果公司,美国运营商AT&T和Verizon,当然微软没有加入,独树一帜的加拿大RIM和他们的Blackberry也被挡在门外。
手机开放联盟大家庭成员名单:
一、手机制造商:
台湾宏达国际电子(HTC)(Palm等多款智能手机的代工厂)
摩托罗拉(美国最大的手机制造商)
韩国三星电子(仅次于诺基亚的全球第二大手机制造商)
韩国LG电子
中国移动(全球最大的移动运营商,截至09年9月底 有7.03亿用户)
日本KDDI(2900万用户)
日本NTT DoCoMo(5200万用户)
美国Sprint Nextel(美国第三大移动运营商,5400万用户)
意大利电信(Telecom Italia)(意大利主要的移动运营商,3400万用户)
西班牙Telefónica (在欧洲和拉美有1.5亿用户)
T-Mobile(德意志电信旗下公司,在美国和欧洲有1.1亿用户)
二、半导体公司:
Audience Corp(声音处理器公司)
Broadcom Corp(无线半导体主要提供商)
英特尔(Intel)
Marvell Technology Group
Nvidia (图形处理器公司)
SiRF(GPS技术提供商)
Synaptics(手机用户界面技术)
德州仪器(Texas Instruments)
高通(Qualcomm )
三、软件公司:
Aplix
Ascender
eBay的Skype
Esmertec
Living Image
NMS Communications
Noser Engineering AG
Nuance Communications
PacketVideo
SkyPop
Sonix Network
TAT-The Astonishing Tribe
Wind River Systems
硬件产品运行Android
已发布(预装)
HTC Dream
HTC Magic
HTC Hero
Qigi i6
HKC Pearl
HKC Imobile v413
Samsung I7500
售后安装
一些用户已经能够(某些黑客,以及有限的功能)安装Android在其它操作系统的移动设备之上:
OpenMoko手机 (Neo FreeRunner 及 Neo 1973)Motorola A1200 MingHTC VogueHTC PolarisHTC KaiserHTC Touch Diamond: 并非所有功能都被许可 (包括 Wifi)HTC Touch Pro诺基亚 N810诺基亚 770Asus EeePC 701Asus EeePC 1000HTouch Book from Always InnovatingDell Axim x51vHTC Touch HD: 并非所有功能都被许可 (包括 Wifi和音频语音通话)Samsung Omnia: 只有基本功能(没有相机或WiFi,需要安装在SD卡中)Sharp Zaurus[1][2]
[编辑本段]Android的未来发展
虽然没有看到Gphone的真正模样,但据了解,Google的Android平台手机将在2008年下半年正式揭开面纱.对于消费者来说,Google手机将是一款通用的、功能强大的、设备完整的手机产品。
美国咨询研究集团Strategy Analytics的最新报告指出,Google最近公布的android手机软件平台,很可能在2008年时获得全球智能手机软件平台2%的份额。
而老牌智能手机软件平台制造商Symbian发言人则表示:Google的android只不过是另一个linux,symbian对其它软件与其形成的竞争并不感到担心。除了北美之外,Symbian在其它地区智能手机市场都占有大部分市场份额。
与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台。
但其最震撼人心之处在于Android手机系统的开放性和服务免费。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁;同时与Windows Mobile、Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近三成成本。
Android项目目前正在从手机运营商、手机厂商、开发者和消费者那里获得大力支持。谷歌移动平台主管安迪·鲁宾(Andy Rubin)表示,与软件开发合作伙伴的密切接触正在进行中。从去年11月开始,谷歌开始向服务提供商、芯片厂商和手机销售商提供Android平台,并组建“开放手机联盟”,其成员超过30家。
[编辑本段]Android的市场前景
Google手机于08年10月22日正式上市,与运营商捆绑的合约价为179美元(约合人民币1200元),现有的T-Mobile用户可以通过网络订购。在10月22日发布当天,将有22个国家和地区可以买到谷歌手机。在11月,将增至27个国家和地区。
谷歌手机将只能在T-Mobile网络内使用,将会有SIM卡锁定限制。T-Mobile USA提供了两种流量和短信包月计划。第一档为25美元,包括不限制的网络流量,以及一定数量的短信;第二档为35美元,包括不限制的网络流量和不限数量的短信。G1支持各种谷歌的服务,包括Gmail、Google Maps、YouTube、Google日历和Google Talk,内置Chrome Lite浏览器。使用这款手机也需要Gmail账号。
“我爱死我的G1了!”谷歌联合创始人拉里·佩奇(Larry Page)憧憬:“对于我来说,谷歌手机最激动人心的一点就是它的未来。它的功能很强,正如几年前的电脑一样。你可以上网,安装软件。”
T-Mobile USA为德国电信旗下移动子公司,运营GSM/HSPA网络,拥有用户近3000万。此次发布的谷歌手机采用高通MSM7201A处理器,支持7.2Mbps下载速率,美国运营商3G网络设定的套餐速率一般可达1Mbps以上。MSM7201A为单芯片、双核,整合硬件加速多媒体功能、支持3D图形,300万像素的摄像功能可以扫描条形码,并且有GPS功能。
在美国四大移动运营商中,T-Mobile USA处于相对弱势的地位,不过T-Mobile在欧洲有更为强势的是CDMA EV-DO网络,而T-Mobile USA和苹果iPhone的独家运营商AT&T为GSM/HSPA网络,后者在2005年12月就推出了全球第一个HSDPA商用服务。
T-Mobile USA今年5月方才在纽约推出了3G服务,目前已经在奥斯汀、巴尔的摩、波士顿、达拉斯、休斯敦、拉斯维加斯、迈阿密、明尼阿波利斯、凤凰城、波特兰、圣安东尼奥和圣地亚哥等12个城市增加了3G覆盖,公司计划年底前将3G覆盖的城市从目前的13个增加到27个,能够为其超过2/3的用户提供3G服务。
[编辑本段]Android在中国
android在中国的前景十分广阔,首先是有成熟的消费者,在国内,android社区十分红火比如androidin.net,这些社区为android在中国的普及做了很好的推广作用。国内厂商和运营商也纷纷加入了android阵营,包括魅族,中国移动,中国联通,华为通讯,联想等大企业。
[编辑本段]Android资源
android官方网站 http://www.android.com
android开发网站 http://developer.android.com
[编辑本段]Android 的市场手机品牌
国内的品牌
琦基
去年11月27日,琦基发布了全球首款Google Android/Windows Mobile双操作系统的智能手机琦基i6,采用Google Android操作系统的叫做琦基i6 goal,采用Windows Mobile操作系统的叫做琦基i6 Win。
华硕
华硕公司CEO沈振来日前在CES展会上向媒体表示,公司正在考虑推出一款Eee品牌手机,并可能基于Google Android操作系统。
联想
OMS和T-mobile G1搭载的Android(以最初上市版本为主)的不同之处就是可以使用户自行关闭正在运行的程序而不是由系统控制:按住屏幕上方向下拖动即可看到任务管理器。
HKC Pearl
做为目前在市面上唯一正式销售的Windows和Android系统双系统手机,这款HKC Pearl 珍珠珠配备了QVGA屏幕,内存采用了128MB/256MB的标准配置,主处理器采用PXA 310处理器,624Mhz的主频性能非常强劲,而且机器还配备了Wi-Fi,蓝牙2.0无线传输设置。
华为
造型上,U8230在外观上有别于其他Android手机的塑料风格,通体的银灰色和正面功能键盘的发丝纹路都洋溢着商务机型的味道。而作为功能上的特色,U8230拥有一块3.5英寸的大屏幕、高达1500毫安时的锂电池和一枚320万象素摄像头采用Android平台1.5版本。预计将于下半年正式发售。
海尔
海尔H7采用的是Android OS 1.5系统,不过如果H7上市时Android OS已经升级到2.0版的话海尔应该会一步到位选择Android OS 2.0。由于海尔在亚洲电信展上展示的H7只是模型机,因此这款手机与HTC的Android机型相比究竟如何尚不得而知。不过海尔的规格说明书表明,H7将会配备2.8英寸触摸显示屏,内置WiFi、GPS和蓝牙模块,支持FM收音,配备200万象素摄像头,支持闪光灯功能。
华禹
xPhone是由上海禹华通信技术有限公司设计的,采用类iphone的触控设计,配置了3寸WQVGA分辨率的触摸屏,内建300W像素的摄像头,搭载Android平台,采用主频 624Mhz的Marvell PXA-310处理器,拥有128MB SDRAM+256MB ROM的内存配置,支持最大16GB的存储卡扩展,给出的参数中居然还加入了WiFi功能,该机尚未正式发布,我们就静候佳音吧。
宏基Acer A1采用高通8250处理器,最新Android 1.6版本操作系统,512 MB内存,3.5英寸触控屏,可支持GSM和WCDMA双制式,内置GPS,500万像素摄像头,支持micro SD扩展。09年9月底开始在法国和德国接受预定,Acer A1售价为389.99欧元。国外品牌摩托罗拉摩托罗拉 Cliq是全球首款发售的Android操作系统智能手机,采用侧滑盖设计,支持GSM和WCDMA双频,3.1英寸屏幕,320×480像素屏幕分辨率,内置500万摄像头,机身自带256MB内存,支持micro SD扩展。该机最大特色是支持世界上主流社。而最近曝光的moto sholes(也有人称之为moto tao)将搭载最新的android2.0操作系统,据悉将在十月上市。
⑵ Android系统原理及开发要点详解的前 言
Android 是Google历经数年和投资数亿美元开发出来的智能手机系统,Google也发起了围绕Android的组织——开放手机联盟,其英文全称为“Open Handset Alliance”。
随着各大移动终端生产商大力开发和生产基于Android的移动智能设备,Android迅速得到业界和社会的认可,并成为整个产业的热点,基于Android平台的各类人才逐渐成为各大企业竞相争夺的焦点。
Android系统是一个开放的系统,任何公司、个人开发者、爱好者都可以参与其中。对于技术工作者,Android不仅是一个智能手机的系统,也可以作为学习嵌入式Linux系统的较完整的软件平台。
Android是一个较新的系统和技术,因此介绍Android的资料和书籍还比较少,尤其简体中文的书籍,相对更少。本书《Android系统原理及开发要点详解》 是一本综合介绍Android系统的书,集合了Androidin社区多位专家作者的经验,精心编写而成。
Android 作为一个庞大的系统,包括了Linux操作系统、各种本地程序、虚拟机和运行环境、java框架和Java应用程序多方面的内容。这对于初学者是一个非常大的挑战,因此对于学习、研究进而开发Android系统来说,掌握系统的脉络和使用恰当的学习方法是非常重要的,这也是本书的组织主旨。
本书特点
为了适应Android系统的情况,本书在内容的编排和组织上具有以下一些重要特点。
保持完整性和层次性
本书紧紧把握Android系统的4个层次,分章节介绍,并且有重点地介绍了Android整个系统的代码结构、编译系统、相关工具、各部分组织等全局性内容。这将让读者即使只花费较短的时间,也可以获得对Android系统大致的感性理解。
提供清晰的框架
Android是一个有数百兆大小的较大系统,各部分之间是有机联系的,这就要求Android的学习和开发者需要具有一些软件架构方面的知识。本书为Android整体和重点模块绘制了大量的框图,这样非常有利于帮助读者直观地理解系统。本书在讲述每一个部分时,均列出相关代码的路径,帮助读者对应着进行快速、高效地学习。
抓核心内容
Android系统已经发布了若干个版本:1.0、1.5(cupcake)、1.6(donut)和2.0(eclair),从开发的角度,各个版本在同时使用,这对于学习者是一个较大的挑战。因此本书作者通过把握Android演进中脉络,尽量总结出共性的内容展示给读者。在某些部分,在讲解代码的同时,突出概念性的内容。本书力求通过一本教材,给读者一个长期的、稳定的学习方法和思路。
开发细节
Android 包含众多的软件、程序和工具,涉及软件开发各个方面。在实际的开发过程中,很多内容并不需要开发者去改动。本书从工程的角度出发,偏重开发中常用的内容,对于开发中较少涉及的部分,仅做精炼的大致介绍。本书重点介绍显示机制、输入机制、音频/视频系统的移植层、多媒体系统的构建、电话系统的构建、连接系统的构建、传感器的移值、应用开发中最常涉及的部分,在每段讲解中,穿插了开发中可以使用的一些技巧。
本书内容
本书的各个章节及其组织方式如下所示。
第1章“Android系统概述”,概述Android系统方面的内容,包括智能手机平台的发展历程、Android系统的特点、Android的3种开发工作,以及Android的2种不同的开发方式。
第2章“Android系统开发综述”,介绍Android系统开发的综述性内容,包括工具使用、获得代码、编译系统、仿真器运行、SDK使用等。
第3章“Android的Linux内核与驱动程序”,介绍Android内核的特点、Android中使用的专用驱动程序、Android系统可能使用的标准设备驱动。
第4章“Android的底层库和程序”,介绍Android系统的基础程序,以本地程序为主。
第5章“Android的Java虚拟机和Java环境”,这是介于本地和Java层之间的相关内容,主要介绍Android的Java虚拟机Dalvik的基本概念、Android Java程序的环境、JNI的使用方法,以及Java框架的启动流程等。
第6章“Android的GUI系统”,包括Android GUI系统架构、底层的pixelflinger和libui库、Surface系统、Skia和2D图形系统、Android的OpenGL和3D图形系统等内容。
第7章“Android的Audio系统”,主要是音频的输入输出环节,音频系统从驱动程序、本地框架到Java框架都具有内容。
第8章“Android的Video输入输出系统”,介绍Android的Video输入输出系统,包括Overlay系统和Camera系统两个部分,前者只有本地的内容,后者各个层次均有内容。
第9章“Android的多媒体系统”,介绍Android的多媒体系统的核心部分,包括Android中多媒体系统的业务、结构、多媒体系统的核心框架、OpenCore系统结构和使用等内容。
第10章“Android的电话部分”,介绍Android系统在电话方面的功能,Android是智能手机系统,电话是其核心部分。
第11章“Android的连接部分”,主要包括WiFi、蓝牙及定位系统等,这些Android的连接部分也具有从驱动层到Java应用层的结构。
第12章“Android的传感器系统”,传感器系统涉及Android的各个层次,具有完整的结构,相比其他系统,传感器系统的各个层次都比较简单。
第6~12章分模块介绍Android的几个核心系统,主要是本地框架和Java框架方面的内容,兼顾应用程序和驱动层,这是本书的重点。
第13章“Android应用程序概述及框架”,介绍Android应用程序层的基本概念和应用程序框架,这部分内容是Android自下而上的第4个层次,可以基于源代码或者SDK开发,它们之间的差别非常小。
第14章“Android应用程序的主要方面”,介绍Android应用程序层开发的各个方面,基本上是横向内容,包括应用程序的基本控制、各种UI元素的使用、图形API使用3个方面的内容。
第15章“Android应用程序的设计思想”,本章的内容是基于通用的应用程序和GUI程序的通用设计思想,结合Android系统自身的特点,提出一些值得注意的问题和设计方法。
本书读者
本书适应广大的读者群,力求在Android的系统移植、应用程序开发、系统框架改进方面给读者全面的支持。不同的读者在学习本书时,应该使用不同的方法。
Android初级开发者:在本书指引下阅读代码,搭建系统开发环境,对于Android应用程序的开发者,重点关注后3章的内容。
Android中、高级开发者:通过本书的引导,学习系统架构,关注开发要点,并尽量使用手机系统的通用设计思想、软件工程思想、系统工程思想来指导Android系统学习。
嵌入式Linux系统学习者:将Android作为一个集Linux核心和应用层程序于一体的系统进行学习,并可以利用Android的仿真环境运行和调试程序。
读者在学习本书的过程中,应尽量对照本书的框图和手头的Android源代码,这样可以达到事半功倍的效果。本书在重点代码中加上大量的注释,帮助读者阅读,对于非重点的代码,不占用本书的篇幅,读者可以参考开放的源代码。可以采用顺序读和重点读相结合的方式学习本书,顺序读关注系统框架,重点读关注开发要点。
本书作者
本书在编写过程中提炼和综合Android早期开发者的经验、中国大陆Androidin社区的开发成果,以及各位专家的经验和技术,这是本书出版的知识源泉。本书主要由Androidin社区的两名核心技术专家韩超和梁泉领衔规划和编着,韩超统稿。总部设在南加州、专注于Android平台并提供其移动应用开发及解决方案的迈奔无线(mAPPn Inc.)也投入技术和人力参与了本书的工作。
参与本书编写的还有于仕林、张宇、张超等人,赵家维、黄亮、沈桢、徐威特、杨钰等参与了审校工作。
由于时间仓促,可能依然存在一些错误和问题,请读者见谅,欢迎读者讨论和指点。
⑶ Android开发特点都有哪些
Android开发特点3,Android特点之布局管理
FrameLayout:左上角只显示一个元件。
LinearLayout:线性布局管理器,分为水平和垂直俩中,只能进行单行布局。
TableLayout:任意行和列的表格布局管理器。其中TableRow代表一行,TableRow的每一个检视元件代表一个单元格。
WEB应用程式一般为B/S模式,B/S模式有以下特点:
1开发、维护和升级更经济。
2提供了一致的使用者接口。
3开放性强。
4结构扩充套件性好,易于扩充套件。
5资讯系统整合性更强。
如果你想得更细点的话,还分为APP美工师,APP开发工程师,后台开发工程师
Unix系统是1969年在贝尔实验室诞生,最初是在中小型计算机上运用。最早移植到80286微机上的Unix系统,称为Xenix。 Xenix系统的特点是短小精干,系统开销小,执行速度快。
UNIX为使用者提供了一个分时的系统以控制计算机的活动和资源,并且提供一个互动,灵活的操作界。UNIX被设计成为能够同时执行多程序,支援使用者之间共享资料。
简单来说Wifi(WirelessFidelity)是一种网路传输标准,与蓝芽技术一样,它同属于短距离无线技术。随着网路的应用普及它给人们带来极大的方便也因此得到了广泛应用,Wifi让我们随时随地、的上网成为可能。
WiFi特点如下:
1、覆盖范围广;
2、无需布线;
3、传输速度快,无线标准IEEE802.11a可以达到54mbps。
EDTA 是一种重要的络合剂.EDTA用途很广,可用作彩色感光材料冲洗加工的漂白定影液,染色助剂,纤维处理助剂,化妆品新增剂,血液抗凝剂,洗涤剂,稳定剂,合成橡胶聚合引发剂。
EDTA 是一种重要的络合剂。EDTA用途很广,可用作彩色感光材料冲洗加工的漂白定影液,染色助剂,纤维处理助剂,化妆品新增剂,血液抗凝剂,洗涤剂,稳定剂,合成橡胶聚合引发剂,EDTA是螯合剂的代表性物质。能和碱金属、稀土元素和过渡金属等形成稳定的水溶性络合物。
EDTA是化学中一种良好的配合剂,它有六个配位原子,形成的配合物叫做螯合物,EDTA在配位滴定中经常用到,一般是测定金属离子的含量,在生物应用中,用于排除大部分过度金属元素离子(如铁(III),镍(II),锰(II))的干扰。在蛋白质工程及喊轮败试验中可在不影响蛋白质功能的情况下去除干扰离子。
有翡翠:当翡翠晶粒粗时翠性凭肉眼清晰可见,晶粒细时,须借助于10倍放大镜才可见到翠性。晶粒极细的高档玻璃底翡翠,须借助于显微镜放大40倍左右,才能观察到翠性。
色自然:天然翡翠的颜色顺着纹理方向展布,有色的部分与五色部分呈自然过渡,色形有首有尾,且色看上去像是从其纤维状组织或粒状晶体内部长出来的(俗称有色根),沉着而不空泛。绿色在查尔斯滤色镜下观察不变红,为灰绿色。
光泽强:抛光面具有玻璃光泽或亚玻璃光泽,折射率较高,为1.66左右,高档翡翠如一泓秋水,灵透明丽。
硬度高:硬度为6.5-7,高于所有其他玉石。
密度较大:密度为3.34g/clll3,在二碘甲烷中呈悬浮状。
表面无异常:在宝石显微镜下观察,大多数天然翡翠的表面为“桔皮结构”,当翡翠的晶粒或纤维较粗时,其表面虽有一些粗糙不平或凹下去的斑块,但未凹下去的表面却较平滑,无网纹结构和充填现象。也有少数天然翡翠,因受地质应力作用和风化作用,可产生明显的裂隙和网纹结构,在镜下观察,与受酸腐蚀而形成的裂纹很相似,但这样的翡翠,其内部没有胶的存在,借助于拉曼光谱仪或红外光仪,可得出准确的结论。
声音清脆:将两件翡翠玉件相互碰击,或用玉块碰击被测物,若是a货,则发出清脆的“钢音”,若不是a货,则声音沉闷,然而,听声音仅仅只能供参考,作假工艺“高超”的b货,以及大多数的c货,在一般人听起来,其声音与天然翡翠几乎没有差别。
成分无异常:用电子探针可以迅速而准确地确定出其主要化学成分为:
氧化钠(na20):13%左右;
三氧化二铝(a120,):郑颤24%左右;
二氧化矽(si02):59%左右。
MOOC是指“大众公开线上课程(massive open onlinecourses)”的简称。
课程特征:
1、工具资源多元化:MOOC课程整合多种社交网路工具和多种形式的数字化资源,形成多元化的学习工具和丰富的课程资源。
2、课程易于使用:突破传统课程时间、空间的限制,依托网际网路世界各地的学习者在家即可学到国内外着名高校课程。
3、课程受众面广:突破传统课程人数限制,能够满足大规模课程学习者学习。
4、课程参与自主性:MOOC课程具有较高的入学率,同时也具有较高的辍学率,这就需要学习者具有较强的自主学习能力才能按时完成课程学习内容。
⑷ Android无线开发的几种常用技术(阿里巴巴资深
完整的开发一个android移动App需要经过从分解需求、架构设计到开发调试、测试、上线发布等多个阶段,在发布后还会有产品功能上的迭代演进,此外还会面对性能、安全、无线网络质量等多方面的问题。
移动App的产品形态各不相同,有的是内容类,有的是工具类,有的是社交类,所以它们的业务逻辑所偏重的核心技术有些差别,但它们都会用到一些常用的技术方案。今天我们就先来简单介绍一下这些常用技术,以后会专门分专题来详细介绍这些技术的原理和使用场景。
1. Multidex
在Dalvik虚拟机所使用的dex文件格式中,用原生类型short来索引文件中的方法数,也就是最多只能有4个字节65536个method,在打包apk的过程中会把工程所需要的全部class文件都合并压缩到一个dex文件中,也就是说自己开发的代码加上外部引用的库的方法总数不能超过65535。
随着业务逻辑的不断增长,很容易就会超过这个限制,在编译期间就会遇到这样一个错误:
还好google官方给出了一个解决方案Multidex,它会把dex文件拆成两个或多个,第二个dex文件叫classes2.dex,在Application实例化后会从apk中解压出classes2.dex并将其拷贝到应用的目录下,通过反射将其注入到当前的ClassLoader中。但是这个方案非但不能解决一切问题也不能直接拿来用,而要加入自己的一些改造,来解决NoClassDefFoundError、INSTALL_FAILED_DEXOPT等问题,以保证自己的dex被顺利的加载流畅的执行。
2. Plugin
Multidex虽然可以解决方法数的限制,但随着业务逻辑越来越多,apk的大小也变得越来越多,而且有一些功能并非全部用户都想用的,所以会把一些功能模块独立出来做成插件,让用户可以按需下载更新,这样既减小了包大小,又改善了用户体验。
插件类似于windows的dll文件,放在某个特定目录,应用程序主框架会用LoadLibrary加载各dll文件,按插件接口去访问插件。Android的插件技术也是这样,利用一个进程可以运行多个apk的机制,用ClassLoader将宿主apk之外的类加载进来,插件的context可以通过createPackageContext方法创建。因为插件中的activity,service等组件如果没有在AndroidManifest.xml中声明将不能运行,所以需要预先在AndroidManifest.xml中声明一个代理类(ProxyActivity),将这个ProxyActivity传给插件,让插件的activity也有访问资源的能力。
3. Hot Patch
有时一些严重的crash bug或漏洞需要紧急修复,但有些用户不会或不愿意立即升级,而且频繁升级,没有特别的功能更新只是修复bug的升级,对活跃用户是一种伤害。热补丁就可以解决这样的窘境,它是一种可以线上修复的技术方案,有动态改变方法的能力,一般大型的移动应用都会使用热补丁来处理紧急事件。
Hot Patch可以通过hook来修改java的method,注入自己的代码,实现非侵入式的runtime修改,或者采用正向编程,通过工具生成patch文件,通过jni bridge指向补丁文件中的方法。还有就是利用ClassLoader,在dex中查找class时,如果找到类则返回,找不到就从下一个dex文件中继续查找,由此可以想到,在把问题修复后,可以单独生成一个dex,通过反射插入到dexElements数组的最前面,这样就能让dalvik加载补丁里的类了。
4. Push通道
Push是移动App常用的一种无线技术,基础是基于TCP的心跳机制,和客户端维持一个长连接。用处是向客户端推送消息,或者代替客户端定时去从服务器pull的策略,改为客户端接收到push消息后再去pull。
如果每个应用都自己实现push通道的话,cpu就会不定时地经常被唤醒,耗电量达到难以容忍的程度,而且自己搭建push平台的成本也很大,实时性和效率也存在问题,一般都直接使用一些服务商提供的push方案,这些push平台一般都经过了优化设计,在跨平台和网络穿透性、长连接心跳包、多客户端App链路复用、服务和连接保活等技术上做了优化。比如Agoo最初是淘宝无线事业部开发的push服务,在逐渐完善和支撑淘系其他app后,通过服务端容量、通讯协议优化、业务和开放能力的拓展改进后,与友盟等合作,开始向第三方提供推送服务。
5. 应用加固
一款热门的移动app或游戏发布后会受到很多的关注,经常会遇到二次打包的盗版行为,破解者要么修改游戏的资源文件、道具、分值甚至直接把访问的站点指向自己架设的服务器,损害了开发者的利益;要么偷偷植入自己的恶意代码,表面上看起来跟正版的app完全一样,在后台却盗取用户隐私,植入木马;要么通过反向工程学习原app的核心技术,打破技术上的竞争壁垒。
为了防止被破解只通过混淆是远远不够的,即使是在native层混淆也还是会被人熟练的反编译,所以需要一套对apk的保护方案来反调试、防逆向和防篡改。一般的加固方法都是对原apk先进行加密,然后和壳合并生成新的apk。壳是用来解密apk的dex文件。当应用启动时,壳先解密原apk,准备好自己定义的ClassLoader,然后获取源程序中的Application名称,通过反射找到正确的Application对象,运行它的onCreate方法,这样原apk才能被真正运行。其他一些反调试的方法有针对反编译工具,在源程序中加入一些无效的指令或无效的指针,引发反编译工具的崩溃,还有就是加花指令,利用一些跳转,堆栈操作等指令,让破解者无法清楚地理解反汇编后的内容。
6. 其他
除了上述几点外,在服务端还会涉及灰度策略、链路流量优化、动态更新配置、防DNS劫持等技术,在客户端会涉及用户埋点上报、在线监控、进程保活、H5和native混合开发、注入框架等。