研发Android Framework所需的基础工具和C++基础知识

本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。

欢迎和大家交流。qq:1037701636 email:gzzaigcn2012@gmail.com

注:Hardware:A31,Software:Android4.2.2   

 

    俗话说,良好的开头是成功的一半。研究Android庞大的系统代码(话说编译完4.2.2的源码大概也就10多个G吧),工具上至少要高大上,心态上必要低奢内,本着Read The Fucking Code的不死精神,大脚大脚的向前走,死不要脸的读下去。然后,然后,最终你就会看到那阳光是多么的灿烂,拨开云雾见天日的优越感瞬间会冲刷着你的最强大脑。

 

一.写一下属于我的Android4.2.2 FW等底层开发所需的基本工具与手段:

A.window级用户:不建议虚拟机,最好的机子编译起来也会比较费时,恐怖的源码啊。一般企业级里面都会配有一台服务器,开个50G的空间,安装个Ubuntu12.04 64bit的虚拟机,100G的空间基本就OK了。故使用的手段时本地Eclipse+SourceInsight+Cygwin+SecureCRT(SSH), 远程配上Samba服务器,加上那大的要死的Android源码;

 

B.Linux级用户:一般推荐直接PC上安装个Ubuntu系统,编译会省去很多时间的哦,32bit的10.04和64bit的12.04都是Google官方推荐的。Ubutnu+Wine+SourceInsight基本上也就是绝配了,话说真正的Linux大神都是Vim+Emacs+Eclipse是其最喜欢的。

 

远程服务器端配置Samba的过程记录如下:

step1:Ubuntu卸载、安装Samba命令。

卸载:
sudo apt-get remove  samba-common
sudo apt-get remove  smbclient
sudo apt-get remove  samba
安装:
sudo apt-get install samba
sudo apt-get install smbfs

 

step2: Samba的配置,创建一个共享的目录。

[A31_Android_SDK]                  //windows下登陆smb服务器会显示出的文件名
path = /home/android4.2.2 //指定共享目录路径,若不存在,则自己创建
available = yes
browseable = yes
public = yes
writeable = yes
guest ok =  yes


step3: Window下开启一个网络文件,方便SourceInsight的创建工程。

win7下的流程是计算机——>文件——>添加一个网络位置——>服务器IP/xxx(要共享的目录名),列如:\\192.168.1.217\A31_Android_SDK


注意点:

如果win下面出现xxx不允许访问,您可能没有权限使用网络资源,,,等时,可采用cmd启动windows命令行net  use  *  /del   /y  允许该命令即可。

 

C. 对SourceInsight的使用,Android源码量大,故如果手动一次完全导入的话,在同步源码的各种符号链接时基本就是会报出内存不够的错误。相比4.2.2的源码,2.3的可以直接新建工程完全导入,4以上的源码建议将Framework, HardWare , Devices和System这几个导入即可,同步所需的时间不会很久。

 

二. C++的基础开发知识在Android FrameWork层中的重要性

由于当初的C++学的比较粗糙,基本没有OOP的思维,以前完全是按C的流式理念在编码,故自己给自己补充了一些在FrameWork中中出现的C++的基础知识。

 

2.1 C++中的类,成员变量和成员函数

类:Class Base,具备构造和析构函数,拥有Public,Protected,Private等成员属性。

对象: Base mBase;

成员变量:原来标准的变量名编码的习惯都是mxxx开头的;

 

2.2 C++中的类模板和函数模板

C++的类模板,也称之为参数化的类,其在Android里面无处不在,典型的如SP,Binder类模板的基础结构如下:

template <class T1, class T2, class T3>
Class Base {};

Base类里面的数据成员,成员函数的某些数据类型会由T1,T2,T3等来标定 

类似的函数模板

template <typename T>
T fun()
{
    return 0;
} 

 

2.3 C++符号的重载

在FW里面用的比较多的运算符号重载主要是赋值=,指针->等,在SP里面用的比较经典。

函数类型 operator 运算符(参数表)

{

函数的实现;

}

 

2.4.C++中”虚“的力量

基类、继承、派生:Class Derived:Public Base,儿子与父亲的关系,通过继承属性,派生类可以使用决定使用父类成员的范围。

虚函数:一般在基类中带有virtual的函数,虚函数的力量在于实现了C++中的一个多态的特性,使得对象在运行时才去决定调用的实际成员函数。

纯虚函数:在虚函数的基础上直接赋值为=0;

抽象类:带有的成员函数都为纯虚函数,主要是定义接口,让继承的子类都实现,否则子类也只能成了抽象类了。抽象类不能new对象,可以使用指针和引用等。

 

 2.5.C++中的这个this

 C++中的this是个比较牛逼的东西,随着对象的生成而就一直存在,无论你访问哪个成员函数,编译器都会自动将this指针作为参数传入到对应的函数中。

 

2.6 C++中的结构体Struct

 C看的多了,亦不知C++的结构体基本就是类的概念了,C++的结构体多作为Class的内部类,结构体内可以带有成员函数。与类的区别就在于它的所以成员都是默认下都是Public的,区别与类的默认Private。

 

2.7.C++对象在内存中的布局

这个属于C++较深层次的东西,从C的角度来理解,一个对象在调用构造函数时,默认开辟一个内存空间来维护这个对象,类的对象中是没有关于普通成员函数的指针的,只有成员变量还有虚表指针。

 

先记录到这里,后续有新的内容再补充。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
开发 Android Framework 需要掌握以下基础: 1. Java 编程语言:Android 应用程序是使用 Java 编程语言编写的,因此需要具备扎实的 Java 编程基础。 2. Android 应用程序开发:熟悉 Android 应用程序开发,了解 Android 应用程序的架构、组件和生命周期等。 3. Android 系统原理:了解 Android 系统原理,包括进程、线程、内存管理、文件系统、网络连接等。 4. Linux 操作系统:Android 系统基于 Linux 内核,因此需要了解 Linux 操作系统的基础知识。 5. C/C++ 编程语言:Android Framework 是使用 C/C++ 编写的,因此需要对 C/C++ 编程语言有一定的掌握需要学习的内容包括: 1. Android Framework 的架构和组件:了解 Android Framework 的架构和各个组件的作用,掌握 Android Framework 的整体结构。 2. Android 应用程序开发:熟悉 Android 应用程序开发,包括 Activity、Service、BroadcastReceiver、ContentProvider 等组件的使用。 3. Android 系统原理:了解 Android 系统的运行机制和相关原理,包括进程、线程、内存管理、文件系统、网络连接等。 4. Linux 操作系统:了解 Linux 操作系统的基础知识,包括 Linux 文件系统、进程管理、内存管理等。 5. C/C++ 编程语言:掌握 C/C++ 编程语言的基础知识,包括指针、数据结构、内存管理等。 此外,还需要了解 Android Framework开发工具和相关技术,例如 Android Studio、Gradle、NDK 等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值