1. 作为使用者
2. 作为开发者
3. 作为测试者
作为使用者
作为使用者所要了解的Android平台的知识。首先使用Android手机通常是有经验的手机使用者,他们往往对Android手机及其扩展功能很爱不释手,这当然也是google开发这个应用的目的,就是使用应用商店下载很好玩的、很酷的应用程序,它的真正的魅力来自于一个开放的应用平台,和成千上万的应用软件,可以想象,那么有创新能力和软件开发实力的google能败给苹果应用商店吗,尽管现在开来软件数量和质量还远不如苹果,但是它有先天优势,可以笼络众多开发人员向他靠拢。
优势:开放性(价格更低);硬件丰富性;众多第三方应用(大家生而平等,不再受手机开发商制约了);无缝连接google应用(搜索巨人的大部分应用都能无缝链接,并且条目还在不断的增加中)。
特性:全屏触摸,而不是像S60,windows mobile那样需要选中某个很窄的区域进行拖拽。
多点触摸(类似苹果)将会在2.0以后实现。用户感受非常棒。
很多产品供选择:由于各个公司都会像这个产品倾斜,用户就不是必须选择iPhone才显得很酷。。。
扩展:应用商店
网络功能:非常好的用户感受,速度超快
搜索功能:集合手机内部搜索和google强大的网络搜索功能,再加上语音搜索,用户还可以自己下载图片搜索功能,以后说不定还有视频搜索呢
缺点:
某些应用太过于简单,还存在一些问题,不如MMS,还有蓝牙功能太简单,还有就是声音问题,不能同时在外部和耳机同时有声音(错过很多电话如果插上耳机)。
某些应用用户体验不是很好,远不如iPhone
作为使用者,常用的是
- 核心应用:接打电话,通讯录(在线、离线)
- Web Browser,这也是Android手机最强大的,用户体验非常好,需要改进的地方还有多点缩放,flash动画支持,文件下载支持,文件上传支持,gears全面支持,插件支持等等
- 搜索功能:手机内部搜索,web搜索,语音搜索
- 电邮功能:Gmail,POP,IMAP,Exchange(2.0以后)
- 公文处理:Officesuite,在线公文处理软件等
- 信息功能:SMS MMS
- 多媒体功能:照相摄像,音乐播放,视频播放,流媒体播放,相册管理
- SNS: facebook,twitter等等,应用软件还在不断增加
- IM:GTalk,MSN,AIM, ICQ,Yahoo, QQ, Fethion 等等
- 玩游戏:目前应用商店里面有一些游戏,相信以后大型的游戏还会不断增加中
- 地图:GPS导航,指南针
- 连接功能:蓝牙,wifi等
- 购物休闲。。。
- 其他扩展:应用商店里面很多应用
用户可能具备的知识:
应用程序切换和使用,常用设置,应用程序使用特点(和其他手机的不同点),怎样安装卸载软件,在SD卡安装应用。怎样管理用户数据。怎样清除用户数据。高级扩展方式(破解应用等)。
资料集合:
作为开发者:
首先开发者有两部分,其中大部份为上层应用的开发者,他们主要利用SDK进行开发,也就是我们平时看到的应用部分。也有一部分为库/驱动开发者,他们主要讲Android移植到自己的硬件上的工作,还有一些库文件的增加裁剪(需要注意地是为了考虑到Market上软件的兼容性,一般会只增加,很多问题也是由此而来),这些也直接决定一个系统的稳定性,这些开发人员要求对arm,linux驱动程序开发移植工作非常熟悉。
作为一个应用开发者:
1. 读读What's android
2. Android application的构成和运行机制
3. Development Tools
4. 研究一下Android Apps各组件的生命周期
5. 动手制作自己的Android app,对各个组件进行练习(APIDemo等也行),然后按照Notepad例子逐渐走下去
6. 熟悉Debug
作为一个底层开发者:
1. 从Bootloader开始
2. Linux内核裁剪和移植(http://wiki.kldp.org/wiki.php/AndroidPortingOnRealTarget?refresh=1)
3. 电源管理
4. 内核选项配置
5. 设备驱动
6. 根文件系统制作
7. 系统优化和调整
参考书目:
Android内核的简单分析http://blog.chinaunix.net/u2/85263/showart_1729098.html
分析Android 根文件系统启动过程(init守护进程分析)
http://www.hiapk.com/bbs/thread-6388-1-1.html
Android.Essential
設計招式之美(高焕堂)
Android_应用框架原理与程序设计(高焕堂)
Hello Android(Ed Burnette)
Android的Message Queue(高焕堂)
作为测试者:
作为测试者,我们就不仅要熟悉该平台上的应用程序,还要对相应的开发技术有所了解,我们不必要做到跟开发者一样熟悉,但是也必须对该平台上的API有所了解,一个应用程序最容易在什么地方出现问题很清楚,这样才更有针对性的去测试。
测试有很多种测试,如果按照V模型的话,最初的单元测试(JUnit)一般有开发者自己完成,这根据公司的财力状况了,一般都是开发粗略的测一下。集成测试然后是系统测试,集成测试接触的不是很多,就不单独列出来讲了。说说系统测试吧。
就测试方法和传统应该来说没有什么改变,不过更有针对性,应该更有针对性,就是就Android应用的特征设计测试用例。
针对这点首先我们必须了解这个平台的特点,下面列出要熟悉的技术:
1. 什么是Android?熟悉Android Architecture
2. Android手机应用都包含组件(Application Framework),各个应用的具体细节部分,和传统的手机功能的区别
3. 该平台最有特点的地方
4. Android手机应用程序的运行机制
各个组件的特点
各个组件的生命周期
针对各个组件的测试方法
5. 可以练习开发一些应用以了解熟悉各个API的特点,这样有利于我们了解一个应用程序的在什么地方最脆弱,什么地方才是开发最容易忽视的地方。
6. 要熟练掌握各个抓log的工具的使用,各个log参数还有它们在什么时候使用
7. 要能够根据打出的log通过定位应用程序的问题(当然这个要开发把必要的log打出来)
8. Monkey压力测试工具
9. 各种shell命令(对android支持的linux命令需要熟悉他们的参数和用法。)
了解上面之后,我们才能在系统测试更有针对性的设计用例,比如对于相同content provider进行交互测试,看看应用程序对资源共享有无冲突等。
资料:
1. 安装android SDK
docs/sdk/index.html
2. What is Android? /docs/guide/basics/what-is-android.html
3. Application Fundamentals /docs/guide/topics/fundamentals.html
4. User Interface /docs/guide/topics/ui/index.html
5. Intents and Intent Filters /docs/guide/topics/intents/intents-filters.html
6. Data Storage /docs/guide/topics/data/data-storage.html
7. Content Providers /docs/guide/topics/providers/content-providers.html
8. Security and Permissions /docs/guide/topics/security/security.html
9. Graphics /docs/guide/topics/graphics/index.html
10. Audio and Video docs/guide/topics/media/index.html
11. Location and maps /docs/guide/topics/location/index.html
12. App Widgets /docs/guide/topics/appwidgets/index.html
13. ADB用法 /docs/guide/developing/tools/adb.html
14. DDMS用法 /docs/guide/developing/tools/ddms.html
15. UI/Application Exerciser Monkey /docs/guide/developing/tools/monkey.html
16. Notepad Tutorial docs/guide/tutorials/notepad/index.html