posts - 33, comments - 0, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大。如下是我们向您强烈推荐的主题为Android开发的第一个系列文章。

文章皆来自CSDN网友maxleng的专栏,maxleng是名Android爱好者,长期从事嵌入式系统及手机软件系统研究,自2010年4月起,在CSDN上先后发表28篇《Android核心分析》系列博文,收到网友们的极高评价。《Android核心分析》整理如下:

1. 方法论探讨之设计意图

2. 方法论探讨之概念空间篇

3. 手机之硬件形态

4. 手机的软件形态

5. Android基本空间划分

6. IPC框架分析(Binder,Service,Service manager)

7. Service详解

8. Android启动过程详解

9. Zygote Service详解

10.Android GWES基本原理篇

11.Android GWES消息系统篇

12.Android核心分析之Android GEWS窗口管理基本架构篇

13.Android GWES窗口管理详解

14.Android GWES输入系统篇

15.Android GWES输入系统之输入路径详解

16.Android电话系统-概述篇

17.Android电话系统之Rild服务详解

18.Android电话系统之GSMCallTracker

19.Android电话系统之RIL-Java

20.Android应用程序框架之无边界设计意图

21.Android应用框架之AndroidApplication

22.Android应用框架之Activity

22.Andoird GDI之基本原理及其总体框架

23.Android GDI之显示缓冲管理

24.Android GDI之共享缓冲区机制

25.Android GDI之共享缓冲区机制

26.Android GDI之SurfaceFlinger

27.Android GDI之SurfaceFlinger之动态结构示意图

28.Android GDI之Surface&Canvas

原文地址:http://mobile.csdn.net/a/20110209/291511.html

posted @ 2011-09-23 15:34 马航 阅读(107) | 评论 (0)编辑 收藏

新手学堂:嵌入式Linux操作系统学习规划
ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9)
(2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定)
(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。
从事嵌入式软件开发的好处是:
(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。
(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。
(4)兴趣所在,这是最主要的。
从事嵌入式软件开发的缺点是:
(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。
(2)这方面的企业数量要远少于企业计算类企业。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
(4)平台依托强,换平台比较辛苦。
兴趣的由来:
1、成功观念不同,不虚度此生,就是我的成功。
2、喜欢思考,挑战逻辑思维。
3、喜欢C
C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下:
相信程序员。
不要阻止程序员做那些需要去做的。
保持语言短小精干。
一种方法做一个操作。
使得它运行的够快,尽管它并不能保证将是可移植的。
4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。
5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。
方法步骤:
1、基础知识:
目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。
科目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散数学。
数据结构和算法、操作系统、软件工程、网络、数据库。
方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。
主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。

2、学习linux:
目的:深入掌握linux系统。
方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。
主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。
3、学习嵌入式linux:
目的:掌握嵌入式处理器其及系统。
方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。

4、深入学习:
A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。
说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺 术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!
技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。
嵌入式书籍推荐

Linux基础
1、《Linux与Unix Shell 编程指南》
C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata着
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明著
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)

5、《Linux高级程序设计》 杨宗德著
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着
3、《Building Embedded Linux Systems》

4、《嵌入式ARM系统原理与实例开发》 杨宗德著
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O’Hallaron着
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》

C语言书籍推荐

1. The C programming language 《C程序设计语言》
2. Pointers on C 《C和指针》
3. C traps and pitfalls 《C陷阱与缺陷》
4. Expert C Lanuage 《专家C编程》
5. Writing Clean Code —–Microsoft Techiniques for Developing Bug-free C Programs
《编程精粹–Microsoft 编写优质无错C程序秘诀》
6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》
7.《C语言嵌入式系统编程修炼》
8.《高质量C++/C编程指南》林锐

尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。

posted @ 2011-09-22 14:25 马航 阅读(105) | 评论 (0)编辑 收藏

网上搜了N多解决方法,但是很多将log级别的,用法的,更多的是如何在logcat中设置filter进行log的过滤与查看,但是我遇到的问题是,模拟器怎么着都OK,但真机、手机进行开发调试的时候却看不到log信息,这是很恼人的事情(毕竟模拟器跑起来太慢了)。

刚开始没有查到好的方法,就用try catch把exception打到一个alertdialog中,但是这样只能看个大概,绕这个圈子没用,最后还是在eoe的论坛上看到了解决办法,恐怕原因是rom本身没有打开log的开关

问题表现:连接手机与电脑后,驱动安装正确,USB调试模式打开,在DDMS中可以看到device及其进程的信息,但是logcat中就是没有信息输出
问题原因:一些rom默认关闭logcat
问题说明:ddms中设备名字显示为问号不影响,即adb get-serialno显示为问号不影响.
解决方法:
1.需要root权限(部分rom不需要)
2.打开logcat,并设置level,执行命令如下(android 升级之后 adb 在 platform-tools中,不在tools中)
adb shell
echo 1 > /sys/kernel/logger/log_main/enable
说明:将1写入日志开关文件,1为开,0为关
echo 2 >/sys/kernel/logger/log_main/priority
说明:将代表level的2写入优先级文件
3.重启adb,如果使用eclipse,先关闭eclipse,再重启adb,再启动eclipse
adb kill-server
adb start-server
4.此时logcat应该可以工作了,如果仍旧不工作,则更新adb
android update adb
5.重复第三步,此时logcat应该可以工作了,如果仍旧不工作,找到个人主目录下的android目录,如C:\Documents and Settings\Administrator\.android
找到这个目录下的adb_usb.ini文件,其内容默认只有三行,全为注释,在后面添加一行,内容为0x12d1
6.重复第三步,此时logcat应该可以工作了

转自:http://www.gobbin.cn/2011/02/16/android-phone-logcat/

posted @ 2011-09-06 16:10 马航 阅读(11224) | 评论 (0)编辑 收藏

1.          app2sd是什么
app2sd
就是把应用程序放在SD卡上。有些android手机的用户数据分区(userdata)比较小(比如G1只有76M),dalvikcache和用户数据就占了大半,使得安装了几个软件后就没有空间了。为了安装更多软件,在SD卡上划出部分空间用于存在新软件和数据,使我们的手机可以使用更多软件。

2.          原理
一般情况下都SD卡都默认分成一个windows可识别的分区(FAT)。因为有linux系统的权限问题,为了让它可以存放软件,需要把SD卡的一部分划分成Linux的使用的ext2文件系统,然后在开机时把此分区挂载到某处,并通过链接的方法,让系统从SD卡中读取软件

3.          实现

1)         SD卡分区

a)          使用Linux系统中的工具fdisk,它是命令行工具,很快很简单

b)         Windows下的图形化工具
具体步骤见http://www.3haoweb.cn/a/digital/mobile/2010/0609/2273.html

2)         修改boot.img使得新分区在启动时被自动挂载

a)          说明:

                                       i.              也可以从网上下载带app2sd功能的update.zip包,升级整个系统,但是那样的话还要备份设置、数据、软件太麻烦,所以我选择修改我手机中自带的boot.img,以最小的修改来实现功能

                                      ii.              修改boot.img中的initrc(系统启动时运行的脚本,自动挂载SD卡的ext2分区)

b)         boot.img是什么
boot.img
包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk内存盘(系统基本目录结构的镜像档),然后紧跟着第二阶段的载入器程序(这个载入器程序是可选的,在某些映像中或许没有这部分)

c)          修改本机的boot.img

                                       i.              使用nandroid备份数据
任何对系统的修改都要先备份系统数据

                                      ii.              从机器中取出当前的boot.img
$ export PATH=$PATH:$ANDROID_DIR/out/host/linux-x86/bin/
$ adb shell
# cat /proc/mtd/
查看boot对应的mtdx,一般是mtd2
# cat /dev/mtd/mtd2 > /sdcard/boot.img
假设boot对应mtd2
# mkdir /system/sd1
建立目录以挂载分区
# exit
$ adb pull /sdcard/boot.img ./                 
复制到PC

                                    iii.              解包
下载工具split_boot.img.pl
http://cid-f8aecd2a067a6b17.office.live.com/self.aspx/.Public/android/reference/split^_bootimg.zip
$ ./split_boot.img.pl boot.img                  
解包,解出内核和ramdisk包两部分
$ mkdir ramdisk; cd ramdisk
$ gzip -dc ../boot.img-ramdisk.gz |cpio -i

                                    iv.              修改启动脚本
$ vi init.rc 
如果是乱码,请使用reset命令恢复一下
mount 最后加入
mount ext2 /dev/block/mmcblk0p2 /system/sd1 rw

                                      v.              重新打包
$ cd ../
$ mkbootfs ramdisk |gzip > ramdisk-new.gz
$ mkbooting --cmdline ‘no_console_suspend=1 console=null’ --kernel boot.img-kernel --ramdisk ramdisk-new.gz -o boot_new.img
(mkbootfs
mkbootimg可以android源码包中取得,和adb在一个目录)

                                    vi.              烧写新包到手机
$ adb push boot_new.img /sdcard
$ adb shell
# cat /dev/zero > /dev/mtd/mtd2 (
可能找错没空间,没关系)
# flash_image boot /sdcard/boot_new.im

                                   vii.              验证是否成功
然后重启手机即可,重启后用以下命令看一下是否分区是否被挂载
$ adb shell
$ df 
如果看到/system/sd1项就成功了

3)         做链接,使系统从SD卡读取软件
建立只对软件安装目录做修改(/data/app),这样拨出SD后除了后来安装的软件不能使用之外,不影响手机基本功能的使用
$ adb shell
# mkdir /system/sd1/data/
# cd /system/sd1/data/

# busybox cp -a /data/app ./  
建议做
# busybox cp -a /data/app-private ./        
不建议做
# busybox cp -a /data/dalvik-cache ./
不建议做
# busybox cp -a /data/data ./ 
不建议做
# rm -r /data/app
# ln -s /system/sd1/data/app /data/app

……
其它目录以此类推
然后重启手机即可

4)         注意
由于launcher数据库的关系,可能桌面上看不到原来的那些应用了,不过主菜单里是有的,再建一遍快捷方式即可

4.          参考
http://kb.cnblogs.com/a/1743704/

posted @ 2011-09-04 11:15 马航 阅读(1023) | 评论 (0)编辑 收藏

  一、 说明

1.        下载编译最基本的android源码,只能在模拟器上使用,无法在真机上使用(不能生成boot.img)。这是因为没有编译相关机型的内核和硬件驱动。以下介绍的是用android源码编译出对应HTC G1的版本,和烧写的过程。编译生成的版本除相机以外,其它功能均正常,稳定性不错,也很顺畅。

2.        以下步骤都经过验证(只验证G1手机),实验系统ubuntu8.04,实验日期2010712

3.        关键字: android 2.2 froyo g1 源码编译

二、 编译

1.        建立android源码编译目录
$ export ANDROID=/exports/android/android_2.2/
$ mkdir -p $ANDROID
$ cd $ANDROID

2.        源码下载
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.2_r1
$ vi .repo/local_manifest.xml  #
新建下载配置文件,用以下载内核,编辑内容如下

注意:其中msm是高通芯片组,path指明下载到源码目录中的位置,name指明git上的项目名
$ repo sync           # 开始下载代码,此时需要等待较长时间

3.        编译内核及无线网络驱动
$ cd $ANDROID/kernel
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- msm_defconfig          #
设定默认的msm配置

$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- #
编译内核
$ cd $ANDROID/system/wlan/ti/sta_dk_4_0_4_32
$ make ARCH=arm CROSS_COMPILE=$ANDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- KERNEL_DIR=$ANDROID/kerne l       
#编译无线网络驱动
cp $ANDROID/kernel/arch/arm/boot/zImage $ANDROID/device/htc/dream/kernel
cp $ANDROID/system/wlan/ti/sta_dk_4_0_4_32/wlan.ko $ANDROID/device/htc/dream/wlan.ko

4.        配置编译选项
vi device/htc/dream/AndroidBoard.mk     #若kernel存在,则不重新编译kernel
ifeq ($(TARGET_PREBUILT_KERNEL),)        
TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
endif

file := $(INSTALLED_KERNEL_TARGET)
ALL_PREBUILT += $(file)
$(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
        $(transform-prebuilt-to-target)

5.        编译android源码
$ cd $ANDROID
$ vi buildspec.mk #
加入如下内容,以支持中文

CUSTOM_LOCALES:=zh_CN
$ source build/envsetup.sh
$ lunch full_dream-userdebug        
#指定编译机型
$ make -j2

6.        以打补丁的方式加入不提供源码的库
此时的系统可以被烧写,但电话音乐等基本功能均不正常,需要从系统或其它升级包中提取出源码中不包含的库,以支持相应功能。
HTC网站http://developer.htc.com/adp.html
下载名为signed-dream_devphone_userdebug-ota-14721.zip的包(一个普通的update包),并把它放在$ANDROID目录下,并将其改名为dreaem_update.zip
$ mv signed-dream_devphone_userdebug-ota-14721.zip dream_update.zip
$ cd device/htc/dream
$ ./unzip-files.sh  
此时会提示有几个库找不后,后面有对应解决办法

$ cd $ANDROID
$ vi vendor/htc/dream/device_dream-vendor-blobs.mk
删除包含以下内容的行,这是由于在update.zip中找不到相应库,为编译通过,选去掉它们
libGLES_qcom.so
liblvmxipc.so
liboemcamera.so
libstagefrighthw.so
$ make
$ cp device/htc/dream/wlan.ko out/target/product/dream/system/lib/modules/wlan.ko
#网卡驱动
$ make snod        
重新生成system.img

三、 把编译好的软件烧写到手机

usb线连接手机到电脑,按home+power键将手机启动到工程模式,按back键准备烧写
$ export PATH=$PATH:$ANDROID/out/host/linux-x86/bin        #
把烧写工具所在目录加上路径
$ cd out/target/product/dream/
$ fastboot flash system system.img
$ fastboot flash boot boot.img
$ fastboot reboot

烧写系统后第一次启动手机需要几分钟,请耐心等

四、 修改

1.        安装中文字体(可以在烧写前加入,加在此处用以说明在启动后修改系统的方法)
$ adb shell
# su            
取得root权限

# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system    
使system分区可写
# chmod 777 /system/fonts     
使某个目录有写权限
# exit
# exit
$ adb push frameworks/base/data/fonts/DroidSansFallback.ttf /system/fonts/         
加中文字体
$ adb reboot

2.        支持GPRS上网
添加APN即可上网和发彩信,详见http://www.andbeta.com/Basics/678.html

3.        设置帐户
添加帐户时,服务器填写m.google.com

五、 参考

1.        刷写部分未详细描述,具体请参考文档
http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1452.entry

2.        源码编译部分未详细描述,具体请参考文档
http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1364.entry


转自:http://blog.csdn.net/xieyan0811/article/details/5931573

posted @ 2011-09-04 11:03 马航 阅读(407) | 评论 (0)编辑 收藏

在android的设计中,谷歌设计了一套专门为嵌入式设备使用的bionic C库,以替换原有的GUN Libc,这个精简的bionic库据说只有200多K,所以如果只想使用这个精简的C库像在linux下一样 开发C程序,基本是不可能的。当然如果只想让其在shell中运行还是可以做到的。

因为编译完的目标程序是在android下运行,就要使用交叉编译的工具,在下面地址下载:

http://www.codesourcery.com/gnu_toolchains/arm/download.html

下载完之后,bin目录下的arm-none-linux-gnueabi-gcc就是交叉编译器了

#include <stdio.h>
int main() {
	printf("nihao a\n");
	printf("你好 啊\n");
	return 1;
}

输入一下命令:

./arm-none-linux-gnueabi-gcc hello.c -o hello -static

-static选项在这里是必须的,否则会出现”not found”的错误。

然后就可以把编译好的hello传到手机上运行了。不过这里有个前提条件,要求android机器必须是root过的,好像简单的z4root还不行,必须使用更彻底的root方法,关于如何root,这里就不再赘述了,可以参考相关root的帖子。

adb push hello /dev/sample/

这里要上传的目录必须是root用户所有的。

然后就是运行程序,可以在adb shell里测试

adb shell

cd /dev/sample/

chmod 777 hello

./hello

或者在手机上安装超级终端,在终端里运行

./hello

posted @ 2011-09-02 09:43 马航 阅读(235) | 评论 (0)编辑 收藏

http://bbs.hiapk.com/thread-553691-1-1.html

在ubuntu下adb找不到设备的解决方法:

需要在Windows下锁定端口就好了

在adb shell中输入如下命令:

echo 22>/sys/devices/platform/msm_hsusb_periphera/fixusb 

posted @ 2011-09-01 17:20 马航 阅读(132) | 评论 (0)编辑 收藏

一、使用git下载android内核部分源码

首先新建要保存android内核源码的目录

mkdir android_kernel

cd android_kernel

android kernel的网站http://android.git.kernel.org/

git clone git://android.git.kernel.org/kernel/common.git

下载android内核源码,完成之后会看到common目录,内核的源码就算下载完成了

如果想下载某一内核的版本,可以使用下面几个命令:

git branch -a // 显示所有的分支

git branch -r // 显示romote端的分支

git checkout // 检出某一分支

二、设置交叉编译环境

交叉编译的环境在android源码已经存在,源码的下载可以参考《下载编译android源码》。在源码目录的android_source/prebuilt/linux-x86/toolchain/,可以看到多个交叉编译的工具

mac@mac-desktop:~/works/android_dev/prebuilt/linux-x86/toolchain$ ls -all

总用量 44

drwxr-xr-x 9 mac mac 4096 2011-08-28 15:16 arm-eabi-4.2.1

drwxr-xr-x 9 mac mac 4096 2011-08-28 15:16 arm-eabi-4.3.1

drwxr-xr-x 10 mac mac 4096 2011-08-28 15:16 arm-eabi-4.4.0

drwxr-xr-x 10 mac mac 4096 2011-08-28 15:16 arm-eabi-4.4.3

drwxr-xr-x 10 mac mac 4096 2011-08-28 15:16 arm-linux-androideabi-4.4.x

drwxr-xr-x 6 mac mac 4096 2011-08-28 15:16 i686-android-linux-4.4.3

drwxr-xr-x 8 mac mac 4096 2011-08-28 15:17 i686-linux-glibc2.7-4.4.3

drwxr-xr-x 10 mac mac 4096 2011-08-28 15:17 i686-unknown-linux-gnu-4.2.1

drwxr-xr-x 6 mac mac 4096 2011-08-28 15:17 sh-4.3.3

一般使用最新版本。

三、配置编译时的config文件

因为编译的镜像是要刷到模拟器运行的,模拟器的处理器架构是基于goldfish,所以需要下载有关goldfishconfig文件。下载方法:

mac@mac-desktop:~/works/kernel-2.6.29$ git branch -a

* (no branch)

android-2.6.29

android-2.6.36

remotes/origin/HEAD -> origin/android-2.6.36

remotes/origin/android-2.6.35

remotes/origin/android-2.6.36

remotes/origin/android-2.6.37

remotes/origin/android-2.6.38

remotes/origin/android-2.6.39

remotes/origin/android-3.0

remotes/origin/archive/android-2.6.25

remotes/origin/archive/android-2.6.27

remotes/origin/archive/android-2.6.29

remotes/origin/archive/android-2.6.32

remotes/origin/archive/android-gldfish-2.6.29

remotes/origin/archive/android-goldfish-2.6.27

remotes/origin/linux-bcm43xx-2.6.39

remotes/origin/linux-wl12xx-2.6.39

下载remotes/origin/archive/android-gldfish-2.6.29 版本:

git checkout origin/archive/android-gldfish-2.6.29

然后就可以到arch/arm/configs下看到goldfish_defconfig这个文件了。

goldfish_defconfig文件拷贝到android_kernel目录,并重命名为.config

四、make编译

首先设置环境:

export PATH=$PATH:~/android_source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

然后修改Makefile

ARCH = arm #体系结构为arm

CROSS_COMPILE = arm-eabi- #交叉编译工具链前缀,参考/toolchain/arm-eabi-4.4.3/bin

然后就可以make编译了,编译过程中会连续提示yes/not,能看懂的多注意几眼,看不懂的一路狂按Enter,最后如果前面的设置正确,编译完整后会看到下面的提示:

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready

五、编译得到zImage,用新内核启动模拟器

./emulator -avd android2.1 -kernel ~/kernel-2.6.29/arch/arm/boot/zImage

在模拟器上查看系统信息:

posted @ 2011-09-01 14:19 马航 阅读(1349) | 评论 (0)编辑 收藏

现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法。

 

1.修改/etc/profile文件

如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。

 

(1)用文本编辑器打开/etc/profile

 

(2)在profile文件末尾加入:

JAVA_HOME=/usr/share/jdk1.5.0_05

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export PATH

export CLASSPATH

 

(3)重新登录

 

注解:

a. 你要将 /usr/share/jdk1.5.0_05jdk 改为你的jdk安装目录

 

b. linux下用冒号“:”来分隔路径

 

c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值,在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种常见的错误。

 

d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。

 

e. export是把这三个变量导出为全局变量。

 

f. 大小写必须严格区分。

 

2. 修改.bashrc文件  

这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。

 

(1)用文本编辑器打开用户目录下的.bashrc文件

 

(2)在.bashrc文件末尾加入:  

set JAVA_HOME=/usr/share/jdk1.5.0_05

export JAVA_HOME

set PATH=$JAVA_HOME/bin:$PATH

export PATH

set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export CLASSPATH

 

(3)重新登录

 

3. 直接在shell下设置变量

不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。

 

只需在shell终端执行下列命令:

export JAVA_HOME=/usr/share/jdk1.5.0_05

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

posted @ 2011-09-01 11:21 马航 阅读(133) | 评论 (0)编辑 收藏

刚开始学着用linux,对vi命令不是很熟,在网上转接了一篇。

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令。由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编 辑器,学会它后,您将在Linux的世界里畅行无阻。

1、vi的基本概念
  基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
    1) 命令行模式command mode)
  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
    2) 插入模式(Insert mode)
  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
    3) 底行模式(last line mode)
  将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
 
    不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
2、vi的基本操作 
a) 进入vi
    在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
   $ vi myfile
不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到 「插入模式(Insert mode)」再说吧!
 
b) 切换至插入模式(Insert mode)编辑文件
  在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
 
c) Insert 的切换
  您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
 
d) 退出vi及保存文件
  在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)

3、命令行模式(command mode)功能键
1). 插入模式
       按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;
  按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
 
2). 从插入模式切换为命令行模式
      按「ESC」键。
 
3). 移动光标
  vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
  按「ctrl」+「b」:屏幕往"后"移动一页。
  按「ctrl」+「f」:屏幕往"前"移动一页。
  按「ctrl」+「u」:屏幕往"后"移动半页。
  按「ctrl」+「d」:屏幕往"前"移动半页。
  按数字「0」:移到文章的开头。
  按「G」:移动到文章的最后。
  按「$」:移动到光标所在行的"行尾"。
  按「^」:移动到光标所在行的"行首"
  按「w」:光标跳到下个字的开头
  按「e」:光标跳到下个字的字尾
  按「b」:光标回到上个字的开头
  按「#l」:光标移到该行的第#个位置,如:5l,56l。
 
4). 删除文字
  「x」:每按一次,删除光标所在位置的"后面"一个字符。
  「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。
  「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。
  「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。
  「dd」:删除光标所在行。
  「#dd」:从光标所在行开始删除#行
 
5). 复制
  「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  「#yw」:复制#个字到缓冲区
  「yy」:复制光标所在行到缓冲区。
  「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
  「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。
 
6). 替换
  「r」:替换光标所在处的字符。
  「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
 
7). 回复上一次操作
  「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。
 
8). 更改
  「cw」:更改光标所在处的字到字尾处
  「c#w」:例如,「c3w」表示更改3个字
 
9). 跳至指定的行
  「ctrl」+「g」列出光标所在行的行号。
  「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

4、Last line mode下命令简介
在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

A) 列出行号

 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

B) 跳到文件中的某一行

 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

C) 查找字符

 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

D) 保存文件

 「w」:在冒号输入字母「w」就可以将文件保存起来。

E) 离开vi

 「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。

 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

5、vi命令列表
1、下表列出命令模式下的一些键的功能:

h
左移光标一个字符

l
右移光标一个字符

k
光标上移一行

j
光标下移一行

^
光标移动至行首

0
数字"0",光标移至文章的开头

G
光标移至文章的最后

$
光标移动至行尾

Ctrl+f
向前翻屏

Ctrl+b
向后翻屏

Ctrl+d
向前翻半屏

Ctrl+u
向后翻半屏

i
在光标位置前插入字符

a
在光标所在位置的后一个字符开始增加

o
插入新的一行,从行首开始输入

ESC
从输入状态退至命令状态

x
删除光标后面的字符

#x
删除光标后的#个字符

X
(大写X),删除光标前面的字符

#X
删除光标前面的#个字符

dd
删除光标所在的行

#dd
删除从光标所在行数的#行

yw
复制光标所在位置的一个字

#yw
复制光标所在位置的#个字

yy
复制光标所在位置的一行

#yy
复制从光标所在行数的#行

p
粘贴

u
取消操作

cw
更改光标所在位置的一个字

#cw
更改光标所在位置的#个字


2、下表列出行命令模式下的一些指令
w filename
储存正在编辑的文件为filename

wq filename
储存正在编辑的文件为filename,并退出vi

q!
放弃所有修改,退出vi

set nu
显示行号

/或?
查找,在/后输入要查找的内容

n
与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。


对于第一次用vi,有几点注意要提醒一下:
1、 用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。
3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)

posted @ 2011-09-01 10:34 马航 阅读(151) | 评论 (0)编辑 收藏

仅列出标题
共4页: 上一页 1 2 3 4 下一页