记录Android Framework级开发的心酸历程(一):环境篇

在接到公司项目之前没有接触过Linux,Android,甚至Java,可以说所有和Android有关的东西都知之甚少。写这套东西是为了给自己做个备忘以后系统的学习,给新手些借鉴,同事望高手指导!谢了

项目开始了,首先要下载和编译Android4.0.3的源码,环境如下:XP-》VMware8-》Ubuntu12.04-》jdk1.6.0_24, curl, repo,  gcc 4.4,  g++4.4,  flex,  bison .....按照错误提示,缺什么装什么

下载还算顺利,花了2个多小时。编译也还好,双核的CPU,用了 make -j4,花了5个多小时,中间出现过“cannot find -lz"错误,问搞嵌入式的基友说lz是libz的简写,这个的意思是可能缺少某个库,Linux里分动态库so和静态库a两种,我试着用apt-get install libz.so ,不行,之后用apt-get install libz.a,居然可以了!为了进度,我也不去追究原理了,都是凭感觉和经验。对了,编译期间也可能产生很多permission denied的错误,用sudo chmod命令自己改下权限吧。

编译成功,在generic文件夹下会出现system.img, userdata.img,ramdisk.img三个img文件,使用emulator -image system.img -data userdata.img -ramdisk ramdisk可以模拟了,出现手机图形的那一刻还是很兴奋的,不过噩梦才刚刚开始。
修改framework,需要配置调试环境,当然,你也可以在sourceinsight之类的工具编辑源码然后模块编译framework,按照网上的教程,我进行了Eclipse调试环境的搭建,即把development/ide/eclipse/.classpath文件拷贝到源码的根目录,记得.classpath文件是默认隐藏的,用图形界面ctrl+h或命令行ls -a可以看到,草...这种事不说谁知道...就这样把工程导入到eclipse里,一看有一个错误,还挺开心,是“could not delete ...../target/common/obj/JAVA_LIBRARIES/android_stub_surrent_intermediates/class/AndroidManifest.xml”这句话主语是呢,是eclipse不能删除这文件,还是我不能删除这文件呢,按照常理是eclipse告诉我它不能删除这个文件,但是外行也知道AndroidManifest.xml文件还是很重要的,删除它干毛呢?好嘛,你说你删不掉,我替你删,结果我删了之后,它又叫我删一个什么Android文件夹,我没耐性了,这要删除到什么年月啊?我一寻思,eclipse删不掉那一定是因为文件的权限不够喽,好,我就吧源码目录下的所有文件属性都设置了777,即rwx,导入了,我次奥,这下出现200多个错误!你是仇人派来玩我的吧?
这样eclipse调试环境就这样配置失败了,现在还在找原因,不过可以先试试模块编译吧,先来个./bulid/envsetup.sh 准备一个各个命令,这个后边一定要有空格!!我也不知道为什么。然后mmm framework/base -B,2分钟之后就成功了,再重新生成system.img文件使用make snod。也成了,模拟,OK!下班睡觉,想着明天找个高手来帮我解决调试的问题。
第二天早晨来到公司,想先模拟下Android享受一个成就感,高潮来了,三个img文件消失了!这也太诡异了吧!前一天晚上还模拟了,早晨就不见了!!没办法,听说linux,Android啊水就是这么深,重新编译源码吧!


你可能感兴趣的:(OS)