`

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.jar JAVA_HOME/lib/tools.jar
#export PATH=$PATH JAVA_HOME/bin
由于因为其它工作需要的原因,这里我还安装了1.6的JDK,所以使用export的方式来动态改变环境变量,而没有直 接写到/etc/bash.bashrc中,这个大家可以根据自己的具体情况来选择。
#export PATH=/usr/local/git/bin:/usr/local/git/libexec/git-core PATH(对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=xxxxx@xxxxxxx]xxxxx@xxxxxxx[/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%以上都开源的系 统,不妨自己尝试解决问题,到论坛逛逛,在网上搜索下,或者自己读下源码,都是一种提高。拿到的资源 其实都 是一样的,学到的东西,得到的锻炼却是不同的

分享到:
评论

相关推荐

    apktool android反编译-资源文件获取,能够提取出图片文件和布局文件进行使用查看

    apktool android反编译-资源文件获取,能够提取出图片文件和布局文件进行使用查看 获取资源图片等信息

    android反编译资源获取

    资源文件获取,可以提取出图片文件和布局文件进行使用查看

    AndroidKiller反编译神器(可编译出源码)

    一款可视化的安卓应用逆向工具,集Apk反编译、Apk打包、Apk签名,编码互转,ADB通信(应用安装-卸载-运行-设备文件管理)等特色功能于一身,支持logcat日志输出,语法高亮,基于关键字(支持单行代码或多行代码段)...

    android反编译工具逆向助手

    反编译工具支持反编译apk,提取dex,打开jar文件多种功能

    最新Android反编译合集(包含apktool+dex2jar+jd-gui)

    最新Android反编译合集,里面有apktools,dex2jar,jd-gui apktool: 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar: 作用:将apk反编译成java源码(classes.dex转化成jar文件) jd-gui ...

    RK3399安卓系统DTB提取和转DTS工具

    内含: 1、AndroidTool_Release_V2.58(RK3399烧录备份EXE) 2、DriverAssitant_v4.5.rar(RK3399 windows驱动) 3、mkbootimg,resource_tool,umkbootimg,rkdeveloptool(RK3399 linux解包工具)

    Android反编译工具:逆向助手

    打开一个工具,选择apk提取dex,再选择转jar就能直接看到源代码还能保存下来。资源文件默认反编译就能看到,不用下载几个工具来操作。

    Android逆向助手_反编译助手

    Android逆向助手是一款针对安卓平台的强大逆向辅助软件,功能涵盖apk反编译打包签名;dex/jar互转替换提取修复;so反编译;xml、txt加密;字符串编码等。支持直接将文件拖放到源和目标文件,不用每次都点浏览选择。...

    vdexExtractor,从vdex文件中反编译和提取android dex字节码的工具.zip

    从生成的vdex文件中反编译和提取android dex字节码的命令行工具

    java android 反编译工具大全

    ClassyShark是一款可以查看Android可执行文件的浏览工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的内容包括classes.dex文件,包、方法数量、类、字符串、使用的NativeLibrary等。...

    android反编译三件套.zip

    apktool: 可以获取资源文件,提取出图片文件和布局文件。 dex2jar: 将APK反编译成java源码(classes.dex转化为jar文件)。 jd-gui: 查看APK中classes.dex转化出的jar文件,即源码文件。

    android反编译xml和dex文件所需jar包

    反编译xml成txt for /r . %a in (*.xml) do @java -jar AXMLPrinter2.jar "%a">>"%a".txt 反编译dex文件 java -jar ddx1.5.jar -D -d <destination directory> classes.dex

    android反编译工具

    首先从apk包里面提取出classes.dex(将apk后缀名改为zip文件,解压得到classes.dex) 其中第一个工具dex2jar是用来把classex.dex文件也就是dex二进制码转化为java的标准.class二进制码,然后jd-gui是把标准的.class...

    反编译apk文件(android)

    该工具可以将apk文件反编译成java源代码。 使用方法: 1.提取apk中的class.dex文件: 比如有apk文件:qq.apk,将其改名为qq.zip,然后解压,可以看到classes.dex。 2.解压"apk反编译工具.zip": 解压后,将classes....

    dex2jar_2.0反编译dex文件

    android apk文件提取的dex文件反编译为jar文件工具,官方2.0版本

    apk反编译工具合集.rar

    最全且实用的apk反编译工具,包括apk源码提取,打包工具,代码检测工具等等,部分工具有说明文档,拿来就用

    android反编译三件套(dex2jar、apktool、jdGui)

    作用:资源文件获取,能够提取出图片文件和布局文件进行使用查看 dex2jar 作用:将apk反编译成java源代码(classes.dex转化成jar文件) jd-gui 作用:查看APK中classes.dex转化成出的jar文件,即源代码文件

    Android反编译工具(apktool,dex2jar, jd-gui )

    apktool 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar 作用:将apk反编译成java源码(classes.dex转化成jar文件) jd-gui 作用:查看APK中classes.dex转化成出的jar文件,即源码文件 ...

Global site tag (gtag.js) - Google Analytics