framework学习
来源:互联网 发布:淘宝上下架时间几点好 编辑:程序博客网 时间:2024/05/13 14:55
首先eoeAndroid提示大家需要了解哪些前置知识,首先要有C++基础,如果你只会C,可能对于C++ STL标准库,以及模板和泛型的理解会吃力很多,同时要有OOP的思想否则看Android这样的大工程可能无法很好的组织,这点可以通过h文件画出 UML图来快速了解整个结构。
1. 首先我们从Android GIT源码托管站点下载Framework层的源码,在base.git包
2. 对于Android来说,Google内部使用C++有些类似STL,因为部分用到了只是再次封装,这里建议大家直接看base中的include目录下的utils里的文件,比如说String8.h、String16.h、Vector.h、KeyedVector.h以及TypeHelpers.h
这里String8和String16和STL中的String相比,提供了更多的辅助方法,相比标准库更完善些,其中有些类似uint8_t、 uint_16t和uint32_t这里我们可以理解为VC中的char、short和int,就是8位、16位和32位的整形,主要是标示的范围不同,使用更小的单位可以更节省内存开销,对于系统来说这是十分重要的,对于Vector和STL中的vector功能上是相同的,而KeyedVector我们当做stl中的map去对待即可,本身就是一个哈希映射类型,下面eoeAndroid要强调的就是TypeHelpers这个文件,里面封装的sp模板和wp模板,很多源码中会有类似 static sp 这样的定义,就需要深入的了解下Android的SP了,如果你真的会C++这些都是小儿科了,比如
Java代码:
3. 当然基本的C++设计模式,CWJ推荐大家还是要掌握的,比如说单件模式在C++中,可以在Singleton.h文件中写到,
Java代码:
4. 所有的结构h文件看完后,可以转向base的libs目录,这里对应的是相应的cpp文件,里面包含着具体的实现。 5. Android Framework可以让我们更了解系统底层,开发出更有竞争力的产品。
==============================================
对于Android Framework层的学习,在上一次的 Android框架层学习指导 中我们已经讲到了基础的结构和定义,但是对于Framework层的核心还有哪些呢?
1. 在Android源码的base中,我们可以看到每个目录进去,都会有java和jni两个文件夹,后者对于初入android框架的学习十分有帮助,如果你刚开始了解NDK和JNI相关的不妨读读Google的代码,这对于代码风格和质量的提高都很有帮助。
2. 对于NDK和JNI来说,编译我们需要一个好的环境,这里还是推荐基于Unix架构的Linux或Mac OS编译,Android123推荐放弃Windows下的Cygwin和MingWin可以节省不少的时间,对于编译来说先掌握mk文件的结构比较重要,这里可以直接查看base目录中每个jni子目录的android.mk文件即可,在Linux下mk文件这种脚本方式对于过去一些Visual Studio用惯的可能感觉有些原始。
3. 当然学习Android Framework可以帮助改进系统,定制自己的固件,部分核心的库是独立的external包,比如说 SQLite、Webkit、zlib、libpng这些Android使用第三方开源的库都是在platform/external/xxx.git 中。xxx代表最终的库名。
4. 对于部分的核心库,上次我们在Android框架层学习指导一文中由于篇幅并没有提到,其实在base目录下面的native中可以看到很多系统结构的定义和实现。Android开发网推荐深入掌握Android这个namespace中的所有结构,这样的基础是十分必要的。
5. 最后我们附上Base目录的结构图,希望对大家有用:
Java代码:
Java代码:
- framework学习
- .NET Framework学习笔记
- .NET Framework学习笔记
- NET Framework学习
- zend framework学习小结
- zend framework学习小结
- 学习.net compact framework
- zend framework学习小结
- zend framework学习笔记
- Sample Framework 学习
- Zend Framework学习笔记
- eXpressApp Framework 学习中
- 学习Spring JDBC Framework
- play framework学习笔记
- Entity Framework 学习总结
- android framework学习回忆
- Android framework学习参考资料
- Zend Framework 学习资料
- Implements IConfigurationSectionHandler interface,create a custom configuration section handler
- WebService的开发、部署、调用
- 关于多线程的思考
- Android.mk 翻译
- burpsuite pro v1.4beta 破解版
- framework学习
- java中的九个内置对象总结和四种属性范围
- 介绍Java对象序列化使用基础
- Mysql参数配置优化说明
- CListCtrl用法(下)
- 【毕业生】找工作的原则
- PHP数组操作
- 安装QT和静态编译QT
- 简化前台到后台处理过程 ..