转载

android下载编译以及文件系统提取总结


android下载编译以及文件系统提取总结
一.PC工作环境准备

1.从Ubuntu官方主页www.ubuntn.com.cn下载Ubuntu8.04桌面版,然后完全安装。
2.打开ubuntu终端,输入sudo apt-get install命令来通过ubuntu服务器在线安装需要使用的软件,这里不需要选 择软件版本,ubuntu服务器会做自动的版本匹配。待安装的软件有flex,bison,gperf,libsdl-dev,libesd0- dev,libwxgtk2.6-dev,build-essential,python,valgrind,curl,git。执行命令后使用 which命令验证是否 安装成功,注意,如果缺少部分软件,或者安装没有成功,编译通常都会遇到问题,无法完成。
3.从www.java.sun.com下载JDK_1.5.0_18.bin,在ubuntu终端中直接执行该程序,默认会被安装 到/usr/JDK_1.5.0_18路径下。在终端中输入#java–version,如果显示出java版本信息,说明java安装成功。
这里没有选择ubuntu的自动安装,原因主要是有时候下载速度很慢,而且安装过程有时候会出现问题,反正这样从 SUN的官网下载安装也很简单,呵呵。

4.使用export来设置环境变量:
#export JAVA_HOME=/usr/jdk1.5.0_18
#export CLASSPATH=.JAVA_HOME/lib/dt.jarJAVA_HOME/lib/tools.jar
#export PATH=$PATHJAVA_HOME/bin
由于因为其它工作需要的原因,这里我还安装了1.6的JDK,所以使用export的方式来动态改变环境变量,而没有直 接写到/etc/bash.bashrc中,这个大家可以根据自己的具体情况来选择。
#export PATH=/usr/local/git/bin:/usr/local/git/libexec/git-corePATH(对git工具进行设置,否则无法正 常使用)
二.代码下载
这里的所有代码指定为Android的cupcake版本,更新日期为2009年4月8日,这个版本是Android一个相对比较新的 版本。
1.创建工作目录:
#mkdir /home/android
#cd /home/android
#mkdir bin
2.下载安装repo版本管理工具:
#curl
http://android.git.kernel.org/repo> /home/android /bin/repo
#cd bin
#chmod a+x repo
由于Android项目官方采用repo来做同步管理,所以这里只有使用repo才可以做代码同步。
3.准备下载Android:
#cd /home/android
#./bin/repo init -u git://android.git.kernel.org/platform/manifest.git –cupcake
通常情况下会出现error提示(如果是以前没有创建过repo账户的话),这个错误可以忽略。最后的-cupcake就是 为了下载cupcake版本,如果不加的话,下载的是master版本,master版本属于开发测试版本,很多功能还不稳定
4.配置repo帐户:
#git config --global user.email \"[[email protected]][email protected][/email]\"
#git config --global user.name \"xxxxxx\"
邮箱地址填有效邮箱即可,我试过,其实这步跳过也没有问题。
5.下载源码:
#repo sync
这个操作就是下载整个Android的源码到本地,具体花费时间和网速有关,cupcake版本源码大概1.3G左右。进 入/home/android/可以看到Android的源码目录如下:
--repo --主要是同步管理所用到的一系列文件
--bionic --Android编译过程所需要的一些库
--bootable --负责启动和备份的一些文件
--build --最主要的一些makefile和编译配置文件
--dalvik --经过Google优化了的java虚拟机
--development --开发用的一些文件夹,包括模拟器和工具等
--external --Android工程中引入的外部功能库
--frameworks --中间件部分
--hardware --和硬件有关的一些支持文件,包括wifi,电信模块等
--kernel --经过了优化和修改的linux内核
--packages --所有的上层应用包
--prebuild --Android编译工具所在目录
--system --一些系统级文件
三.系统和开发工具编译
1.系统编译
Android文件系统由于已经自带了经过优化的交叉编译工具,并且为所有的源码都提供了经过验证的makefile,所 以系统的整体编译相对简单,官方发布的版本中基本功能都已经包含进了makefile中,但是我下载的版本的中文 的输入法没有被引入,这里做适当修改:
#cd /home/android/build/target/product/
#gedit generic.mk
打开这个文件后,在PRODUCT_PACKAGES中,加入PinyinIME,然后保存退出。这样在整体编译的时候就会把中文输入 法也编译进system中了。
修改完成后:
#cd /home/android/
#make
第一次进行整体编译,这个过程大概持续2到3小时,默认情况下,会在/home/android/目录下生成一个out文件夹 ,所有的编译生成物都在这一目录下。如果想更改生成文件的目录,请参考/build/buildspec.mk.default文件中 的说明和选项,很简单,相信大家都能看懂。如果编译过程中出现问题,请自行检查上面PC工作环境准备部分中是 否哪里 出了问题,就不要在论坛里反复问了,因为这样的问题应该是自己参考这个帖子后可以完全自己解决的。


2.开发工具的编译
Android提供了完整的开发工具和交叉编译工具,这些都包含在了源码内,所以只要对源码正确编译,就可以获得 丰富的开发工具,并且Android的移植工作也需要这些工具的支持。
编译Android开发工具的步奏如下:
#cd /home/android/
#make sdk
如果出现无法正常编译的情况,请检查JDK1.5.0_18的环境变量配置是否成功。正常情况下最后在/home/android/ 目录下会生长一个out文件夹。
#cd /out/host/linux-x86/sdk/
可以看到这里有了一个名叫android-sdk_eng.root_linux-x86的文件夹,这个文件夹基本包含了Android的模拟器 和所有的开发调试工具。打开这个文件夹,可以看到这里主要由以下几部分组成:
--add-ones --需要增加的新工具路径
--docs --关于模拟器和各种开发工具的说明等
--platform --模拟器和开发工具需要的文件
--tools --模拟器和开发工具的应用程序
四.模拟器使用和文件系统提取
1.模拟器使用
进入~/android-sdk_eng.root_linux-x86/tools目录下,这里有很多Android的工具,其中模拟器对应的应用程 序是emulator。下面是正确使用模拟器的步奏:
#./android create avd –n NO1 –t 1
这个命令会进入创建avd的过程,按自己的需要做出一些选择后,名称为NO1的avd就创建成功了,以后可以通过这 个创建的avd来使用模拟器。1.4之前的版本不需要这样创建,1.5版本后不正确创建是无法使用的。
#./android list avd
输入命令来检查创建是否成功,如果成功会列出来。
#./emulator –avd NO1
启动刚才创建的名为NO1的模拟器,使用的内核,文件系统等均使用默认的,即~/android-sdk_eng.root_linux- x86/platform/路径下的内核和文件系统。没什么问题的话,我们就可以看到Android操作系统的虚拟界面了。
2.使用自己编译的系统
Android可以运行在开发板上的文件系统的提取需要依靠模拟器,具体的操作步奏如下:
#cd /home/android/out/ android-sdk_eng.root_linux-x86/tools/
#./mksdcard –l 200M /home/sdcard.img
这里使用mksdcard开放工具在/home目录下建立一个200M的sdcard.img,用于模拟器中数据和外部数据的交互,虚 拟SD卡的大小不应该小于100M,否则在后期的文件系统打包过程中,有可能会有SD卡存储空间不够的问题。
#./android create avd –n cupcake –t –c /home/sdcard.img 1
创建一个名为cupcake的,附带有sdcard的虚拟设备。
#./emulator –avd cupcake –sysdir /home/android/out/target/product/generic –data /home/android/out/target/product/generic/userdata.img -ramdisk /home/android/out/target/product/generic/ramdisk.img –kernel /home/android/prebuild/android- arm/kernel/kernel-qemu
使用名为cupcake的虚拟设备启动模拟器,并规定系统,数据等的映象文件路径,模拟器内核采用 prebuild/android-arm/kernel/kernel-qemu。当然也可以使用自己编译的内核镜像,关于如果编译内核的问题会 在以后陆续发贴说明。
打开一个新的终端进行操作:
#cd /home/android/out/ android-sdk_eng.root_linux-x86/tools/
#./adb remount
这里使用adb工具的remount选项来使模拟器中的system目录权限改为可读写。
#./adb push tar /system/bin
这里使用adb工具的push指令将提前使用busybox做好的tar应用程序加入到模拟器的/system/bin目录下。关于 busybox的使用这里不作介绍,网上太多了,呵呵
#./adb shell
这里使用adb工具进入到模拟器的shell中。
进入到Android模拟器的shell中操作如下:
#tar xvf /sdcard/system.tar /system
#tar xvf /sdcard/userdata.tar /data
这里使用前面加入到模拟器中的tar应用程序来对system和data目录下所有内容进行打包,并存储到sdcard里。操 作结束后,进入sdcard目录下查看是否有了system.tar和userdata.tar文件,如果有,则证明打包成功。  

#exit
退出shell,并关闭模拟器。
#mount –o loop sdcard.img /mnt
#cd /mnt
这里将虚拟SD卡挂载在/mnt目录下,进入/mnt目录后,就可以将system.tar和userdata.tar拷贝出来,文件系统的 提取完成。


经过测试,发现其实使用android提供的mkyaffsimage直接对/out/target/product/generic/system目录进行打包 ,制作出system.img也完全可以使用,不过不知道userdata.img如何制作,希望有人可能指点。使用 mkyaffs2image制作文件系统映像时要注意的是一些配置文件的权限问题,比如/system/usr/keylayout下的文件 权限就有问题,需要修改,否则生成的映像在模拟器中加载后,键盘等无法正常使用。
最后,要说的是,新加入android的朋友们遇到问题我个人建议最好不要立刻就问,毕竟是个80%以上都开源的系 统,不妨自己尝试解决问题,到论坛逛逛,在网上搜索下,或者自己读下源码,都是一种提高。拿到的资源其实都 是一样的,学到的东西,得到的锻炼却是不同的

更多相关文章

  1. Android根文件系统分析
  2. Android获取已安装应用信息(图标,名称,版本号,包)
  3. linux下操作android模拟器命令
  4. Android Emulator 模拟器使用方法
  5. Android的版本的介绍
  6. 修改 Android 模拟器 density
  7. Android 根文件系统分析(1)
  8. Android Studio 3.0 正式版本 发行说明 (翻译)
  9. Android shell 创建 模拟器

随机推荐

  1. 初探Android
  2. 安卓巴士Android开发神贴整理
  3. Android概述
  4. android architect
  5. Android(安卓)GridView九宫图
  6. Android高手进阶教程(三)之----Android(
  7. Android版本与Linux内核版本的关系
  8. Android系统自带样式(android:theme)
  9. Android(安卓)sdk ADT下载地址
  10. Android(安卓)应用开发笔记 - 图片视图(Im