班级规模及环境--热线:4008699035 手机:15921673576( 微信同号) |
每个班级的人数限3到5人,互动授课, 保障效果,小班授课。 |
上间和地点 |
上部份地点:【上海】同济大学(沪西)/新城金郡商务楼(11号线白银路站)【深圳分部】:电影大厦(地铁一号线大剧院站)/深圳大学成教院【北京分部】:北京中山/福鑫大楼【南京分部】:金港大厦(和燕路)【武汉分部】:佳源大厦(高新二路)【成都分部】:领馆区1号(中和大道)【沈阳分部】:沈阳理工大学/六宅臻品【郑州分部】:郑州大学/锦华大厦【石家庄分部】:河北科技大学/瑞景大厦 近开间(周末班/连续班/晚班):2019年1月26日 |
实验设备 |
◆小班教学,教学效果好 ☆注重质量☆边讲边练 ☆合格学员免费推荐工作 ★实验设备请点击这儿查看★ |
质量保障 |
1、培训过程中,如有部分内容理解不透或消化不好,可免费在以后培训班中重听; 2、课程完成后,授课老师留给学员手机和Email,保障培训效果,免费提供半年的技术支持。 3、培训合格学员可享受免费推荐就业机会。☆合格学员免费颁发相关工程师等资格证书,提升职业资质。专注高端技术培训15年,曙海学员的能力得到大家的认同,受到用人单位的广泛赞誉,曙海的证书受到广泛认可。 |
部份程大纲 |
|
- 目标收益
致力于打造在软硬云整合时代和端云整合时代具有独立思考能力和实践能力的高素质IT人才;
Android高级工程师
Android移植工程师
Android框架开发工程师
Android项目经理
Android架构师
Web开发人员转移到HTML5时代;
使用HTML5技术重构已有的Web应用;
浏览器开发和定制人员;
- 培训对象
- 对Android软硬整合感兴趣的人员;
对端云整合感兴趣的软院;
希望迅速了解和掌握Android应用和底层技术的人员;
Android应用程序开发者;
Android底层开发者;
Android框架设计和开发者;
Android产品架构师;
Android系统架构师;
希望从事移动终端开发的爱好者、工程师、程序员、以及相关行业的工程技术人员
Web开发人员;
云计算从业人员;
- 学员基础
- 1)具有Java基础;
2) 具有C和C++基础更佳;
3)对设计模式有所有了解对提升听课效果会大有裨益;
4) 了解HTML、CSS、JavaScript;
- 课程大纲
- 主题 内容
第1个主题:Android架构揭秘
- 1.1 Google是如何通过Android支持、掌控全球的硬件厂商和应用程序开发者的?
1.2 Android控制力的源泉是什么?技术上如何实现?
1.3 Android的Linux Kernal、HAL、Libararies、Runtime、Application Framework设计的理念和实现技术;
1.4 Android平台与硬件、云的微妙关系;
- 第2个主题:Android开机流程揭秘
- 2.1 第一个用户进程剖析;
2.2 ServiceManager与Binder的关系;
2.3 Zygote揭秘及其运作方式;
2.4 Android中的第一个Java进程揭秘,第一个Java进程和ServiceManager的关系及代码实现;
- 第3个主题:Android中启动一个新的应用程序揭秘
- 3.1 当我们触摸Android屏幕中Launcher上的一个应用程序的图标的时候到底发生怎样的调用过程?
3.2 应用程序的执行入口到底在哪里?
3.3 一个新的Android应用程序的进程到底是怎么产生的?
- 第4个主题:HAL揭秘
- 4.1 HAL被加入Android中的真正历史原因分析
4.2 HAL的意外价值揭秘
4.3 HAL的Stub
4.4 hw_module_t与hw_device_t
4.5 C语言如何实现继承来满足HAL Stub的设计目的?包括内存结构分析和代码风格讨论等
4.6 如何避免HAL Stub实现时的Dirty Code?
- 第5个主题:HAL Stub实战
- 5.1 用面向对象的思想分析、设计、实现Stub
5.2 hw_module_t的子类和hw_device_t的子类的关系以及这种关系的优势
5.3 在结构体中如何实现C函数的调用?hw_module_t的子类在代码中又是如何和hw_device_t的子类交互的?
5.4 类型转换问题
- 第6个主题:HAL和Linux Kernel
- 6.1 HAL Stub访问和控制硬件
6.2 Android下的Linux Kernel剖析
6.3 Android 硬件的Driver
6.4 访问Linux内核空间的Driver
- 第7个主题:Service与HAL Stub整合
- 7.1 以面向服务的观点和方式与HAL交互
7.2 Library的中so库文件的类型及C/S结构剖析
7.3 hw_get_module
7.4 获取HAL Stub对象的代码流程剖析
7.5 为何HAL Stub的open方法必须提供supporting API(对设备的操作接口)给runtime;
- 第8个主题:Binder与Shared Memory
- 8.1 Binder源代码剖析
8.2 Shared Memory剖析
8.3 Binder是如何使用共享内存来完成进程间通信的?
8.4 从代码的角度来分析Binder使用Shared Memory的生产者与消费者模式
- 第9主题: Handler、Looper、Message、MessageQueue
- 9.1 Android的事件驱动模型
9.2 Looper、MessageQueue、Hanlder、Message等源码深度剖析
9.3 Looper、MessageQueue、Hanlder、Message及多线程实战案例
- 第10个主题:把Java写的 Service加入到Applciation Framework中
- 10.1 IInterface与CTS
10.2 Binder
10.3 AIDL
10.4 Java Service与Manager
10.5 SystemServer、ServiceManager
- 第11主题:Android软、硬、云三位一体整合
- 11.1 从技术角度揭秘云,包括云的关键技术和实现方法
11.2 在Application Framework中整合Android与云
11.3 Android软、硬、云三位一体整合,包括模式、策略、实现技术
- 第12主题:Android测试
- 12.1 Android代码测试的好处,测试的方式
12.2 .JUnit框架解析
12.3 测试用例的生命周期
12.4 自动化测试
12.5 源码剖析
- 第13主题:断点续传
- ★ 类似迅雷的多线程下载器
13.1 多线程下载断点续传原理和流程图
13.2 下载文件时Http协议协议详解
13.3 多线程下载断点续传程序:设计服务端和Android端
13.4 Android端的内容涉及IoC、多线程、SQLite数据库、Handler、Http协议、缓存处理、意外关机时候的处理、编写框架、MVC、Service、Android中的I/O流、代码调试、Activity的生命周期等
13.5 单元测试
13.6 软件调试
★ 多线程断点文件上传器
13.7 断点续传原理和流程图
13.8 上传文件的Http协议详解
13.9 自定义自己的文件传输协议
13.10 服务端程序的编写:文件的下载与实时数据的记录、监听模式、乱码问题的处理、并发问题、黑客安全问题
13.11 客户端程序的编写:Android内存溢出问题,Android中的Socket编程、大文件的传输、大文件传输时候的安全问题
13.12 单元测试
13.13 软件调试
- 第14主题:浏览器开发和自定义
- 14.1 浏览器定制和开发的核心原理剖析
14.2 浏览器定制和开发的技术手段剖析
14.3 浏览器定制和开发实战
- 第15个主题:HTML5 架构思维
- 15.1 All in JavaScript
15.2 Architect of Device & Cloud
15.3 Open Platform & API
- 第16主题:Android中Java与WebView中Javascript相互沟通
- 16.1 制作Android界面的新大陆
16.2 Java调用Javascript
16.3 Javascript调用Java
- 第17个主题:通过一个Blog实例实战HTML5&CSS3
- 17.1 实战HTML5新增页面元素;
17.2 实战HTML5中的表单;
17.3 实战HTML5中的Canvas
17.4 实战html 5页面中视频和音频
17.5 CSS3技术实战
- 第18个主题:HTML5的新特性
- 18.1 本地存储
18.2 离线应用
18.3 多线程技术
18.4 地理位置信息
18.5 其它新特性
- 第19个主题:PhoneGap的技术思考
- 19.1 PhoneGap的架构艺术
19.2 PhoneGap与HTML5、CSS3、JavaScript的关系
19.3 PhoneGap与智能手机的核心功能——包括相机、文件访问、地理定位,加速器,联系人,声音和振动等
19.4 PhoneGap的优势和劣势
- 第20个主题:PhoneGap框架的技术基石是什么?
- 20.1 使用WebView
20.2 在WebView中使用JavaScript
20.3 创建本地Java API
20.4 使用JavaScriptInterface
20.5 JavaScript调用Java
20.6 Java调用JavaScript
20.7 PhoneGap是如何使用JavaScriptInterface的
- 第21个主题:PhoneGap案例开发实战
- 21.1 PhoneGap的生命周期事件
21.2 通过Connection测试网络链接
21.3 通过Accelerometer来采集设备的动作
21.4 通过Compass获得当前设备的方向
21.5 PhoneGap 操作本地系统的Camera
21.6 PhoneGap其它的本地API;
- 第22个主题:彻底洞悉jQuery Mobile
- 22.1 jQuery Mobile设计的技术思考和商业思考
22.2 jQuery Mobile入门初体验;
22.3 使用页眉、工具栏和标签栏;
22.4 jQuery Mobile中的表单和按钮;
22.5 jQuery Mobile中的列表;
22.6 jQuery Mobile和CSS结合;
22.7 jQuery Mobile主题;
22.8 jQuery Mobile的API;
22.9 jQuery Mobile和HTML5开发框架PhoneGap结合;
- 第23个主题:Node.js实战高并发和非阻塞式的服务端
- 23.1 Node.js的思考;
23.2 Node.js开发环境安装;
23.3 Node.js开发实战
- 第24个主题:Node.js和WebSocket的整合
- 24.1 使用Node.js和WebSocket打造非同步处理机制及其重大价值;
24.2使用Node.js和WebSocket打造非同步处理机制案例实战
- 第25个主题:Android产业观点及获利模式
- 25.1 Android开源、开放与相容的意义和途径
25.2 Android手机、平板和电视产品的技术趋势与市场策略
- 第26个主题:解析Android框架的设计模式(Design Pattern)
- 26.1 设计模式的使用要点
26.2 常见的设计模式应用情境
26.3 解析UI框架的设计模式,包括事件处理、ListView和SurfaceFlinger框架里的重要机制
26.4 扩充Java层应用框架,优化UI设计
26.5 跨进程(IPC)通信的设计模式
26.6 内容储存的设计模式
26.7 系统服务的设计模式
26.8 HAL-based驱动的设计模式
- 第27个主题:使用NDK/JNI:Java与C/C++的整合开发
- 27.1 使用Android的NDK环境
27.2 从Java呼叫JNI的C/C++函数
27.3 从C/C++呼叫Java的函数
27.4 擅用JNI来提升App效能:以OpenGL的3D绘图为例
- 第28个主题:上层(Java)应用框架的解析观摩与扩充
- 28.1 UI框架解析与扩充
订制Widget控件:扩充View类别体系
定义系统全局控件的风格
改变菜单栏的风格和定制菜单
28.2 MediaPlayer框架的解析与扩充
Java层框架基类及相关类别
JNI接口
系统服务
基类(Superclass)的扩充
28.3 SurfaceView框架的解析与扩充
一般View与SurfaceView的区别
SurfaceView的线程模式
扩充SurfaceView的JNI接口,以底层OpenGL引擎绘图
28.4 SurfaceFlinger框架的解析与扩充
SurfaceView如何透过JNI呼叫SurfaceFlinger系统服务
SurfaceFlinger如何整合多个SurfaceView的动画
扩充SurfaceFlinger/SurfaceView的接口,以显示支持Camera的贴心Preview功能
- 第29个主题:底层(C/C++)框架的解析、观摩与扩充
- 29.1 系统服務:包括Android Service和 Native Service
29.2 以多媒體Mediaplayer為例介紹C++層系统服務
29.3 系统服務的BBinder基类和IBinder接口
29.4 核心服務框架內的通訊機制:
IPC跨進程(Process)通訊機制
如何綁定(Bind)C++層服務
29.5 框架扩充:亲自开发自己的第一支(C++层)系统服务
- 第30个主题:应用框架开发技术
- 30.1 框架的主要元素:基类(Superclass)
30.2 善用类的继承(Inheritance)机制
30.3 设计基类的抽象函数
30.4 设计模式的应用
30.5 UML建模
30.6 实际编程与测试
- 第31个主题:框架(Open)API设计方法
- 31.1 认识Open API
31.2 以框架基类来实践API
31.3 Open API的威力:掌握主导权
31.4 扩充Android的 Open API
31.5 确保与既有API的兼容性
31.6 API的测试方法
- 第32个主题:如何做行业应用框架的需求分析
- 32.1 需求探索
为什么把轮胎拔掉呢?
为什么火锅店的桌子要挖洞呢?
为什么餐厅要分开<食谱>与<点菜单>呢?
如何设计框架的未来性
目前决策的未来性
具有未来性的框架API设计
Steve Jobs的名言:从未来回顾现在
- 第33个主题:亲自演练行业框架的设计与开发
— 使用高焕堂的EIT模式
- 33.1 熟谙EIT框架设计模式(Pattern)
33.2 遵循自然的造物环境:信息局限性(Information Limitation)
心怀自然造物法则:<单一造型、内涵丰富、无限组合>
活用高焕堂的EIT模式:赋予行业内涵、组合出独特性
扩充EIT衔接本地服务,发挥硬件创新差异化
云端服务和HTTP通信协议
扩充EIT衔接云端服务,发挥云计算能力
- 第34个主题:实践编程(一):先落实到Java层应用框架
复习基本步骤
- 分析:领域分析、框架需求分析
设计:EIT模式设计
编程:使用Java语言
编程要点
将EIT模式的实践为Java基类
将 EIT模式的实践为Java的Interface或抽象基类
提供
- 第35个主题:实践编程(二):往下延伸到C/C++层框架
- 35.1 复习JNI,以及Java与C/C++整合开发技巧
35.2 将EIT模式扩大为EITS新模式
- 第36个主题:实践编程(三):往上衔接到HTML5/JS与PhoneGap的跨平台框架
- 36.1 介绍Web层的EITS模式
|