`
lvwz2008
  • 浏览: 28712 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
android下载编译以及文件系统提取总结

原文地址:http://bbs.androidin.com/archiver/tid-2413.html

由于论坛改版,很多有用的资源都不见了,所以这里把自己对cupcake下载和编译方法进行详细说明,以后还会陆续发完善的开发板移植说明、内核编译说明、一些模块级的分析等,希望对刚开始做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%以上都开源的系      统,不妨自己尝试解决问题,到论坛逛逛,在网上搜索下,或者自己读下源码,都是一种提高。拿到的资源其实都     是一样的,学到的东西,得到的锻炼却是不同的。

xuhj 发表于 2009-4-21 18:57
LZ在创建工作目录在/home路径下新建android目录,个人看法觉得不妥,Linux的“潜规则”里,这里是放置非ROOT用户的home。

hercules 发表于 2009-4-21 21:34
》这里没有选择ubuntu的自动安装,原因主要是有时候下载速度很慢,而且安装过程有时候会出现问题,反正这样从 SUN的官网下载安装也很简单,呵呵。
这里是因为你软件源没选对,让系统自动找一个速度最快的就可以了。我找到一个是加拿大的一个服务器,平均速度大概在200K左右

xuezei117 发表于 2009-4-23 16:41
工作目录创建在/home下的原因很简单,因为是公司的工作栈,规定统一在/home目录下建立开发工程,谢谢,何况个人认为即使建立在这个目录下也无不可,没人规定开发一定要以root身份来进行,尤其对于工作栈这样多用户共用的情况下

xuezei117 发表于 2009-4-23 16:43
软件源选择问题我没有尝试过,相信大部分人都用的和我一样的方式,从sun上下载JDK一样很快,没有任何问题,而且版本完全可控,没有任何问题

liouville 发表于 2009-4-24 10:42
怎么我使用这个命令不能创建呢?
#./android create avd –n NO1 –t 1
=====
root@liouville:~/liouville/Mydroid/cupcake/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools# ./android creat avd -n NO1 -t1

Usage:
android --list [target|vm]
android --create --target <target id> --name <name>

Options:
-l [target|vm], --list [target|vm]
Outputs the available targets or Virtual Machines and their Ids.

xuhj 发表于 2009-4-24 13:28
回 3楼(xuezei117) 的帖子
有些奇怪,我没提到要用root来开发,而且我们都是尽量避免使用这大权限的用户。当然你可以把这个目录放在任何路径下,我只是提醒这是个“潜”规则而已,呵呵。

xuezei117 发表于 2009-4-24 14:31
那你的意思应该放在什么路径下最好?

xuezei117 发表于 2009-4-24 14:36
回 5楼(liouville) 的帖子
再次尝试,发现是没有问题的 ./android create avd -n 111 -t 1
注意最后面的符号是阿拉伯数字1,不是英文
如果还不对,可以使用./android list target 来确认下你的版本的target号是多少

hercules 发表于 2009-4-24 21:01
回 5楼(liouville) 的帖子
早一点的虚拟机是这么创建的(三月份的Source code)
./android vm -t 1 -n your_name -s your_skin
最新的代码才是
./android create avd -t 1 -n your_name -s your_skin

create avd不行的话试试vm

biaji 发表于 2009-4-24 23:33
请问如果我想在内核中加入netfilter支持应该修改哪个配置文件后编译才行呢?

niuyi 发表于 2009-4-27 12:13
LZ, 我按照你的步骤做到repo sync这一步,已经开始下载了.可是到了
remote: Compressing objects: 100% (31/31), done

这里,就一直停下了,我等了一晚上,也还是停在这里.


请问,这是怎么回事?谢谢.
我的EMAIL:niuyimail@126.com
请你也留下你的联系方式吧?

xuezei117 发表于 2009-4-27 13:31
回 10楼(biaji) 的帖子
在make menuconfig时,在配置选项中选择Networking options→IP:Netfilter Configuration,基本都在这里哈

niuyi 发表于 2009-4-27 22:10
我知道是什么问题了。

xuezei117 发表于 2009-4-28 15:59
什么问题?

xiangmocheng 发表于 2009-6-10 11:15
很好的帖子~实践中~
分享到:
评论

相关推荐

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

    对于资源文件提取,特别是图片和布局文件,反编译完成后,你可以找到以下内容: - `res/drawable-*`目录:包含了各种分辨率的图片资源,如PNG和JPEG文件。 - `res/layout`目录:包含了应用的所有XML布局文件,你...

    android反编译工具

    8. **Androguard**:Androguard是一个开源的Android安全分析框架,可以用来分析APK文件,包括反编译DEX文件,提取类、方法和权限信息,还可以进行动态分析。 9. **Frida**:虽然主要是一个动态代码插桩工具,Frida...

    android反编译工具(dex2jar,apk2java)

    本文将详细介绍两款常用的Android反编译工具——dex2jar和apk2java,以及如何利用它们获取APK中的Java源代码和资源文件。 一、dex2jar dex2jar是一款将Dalvik字节码(.dex)转换为Java字节码(.jar)的工具。...

    Android反编译工具

    首先,Android反编译工具.exe和Android反编译工具(64位).exe是两个可执行文件,可能是用于在Windows操作系统上运行的反编译软件。这些工具通常能够解析APK文件,将其Java字节码(Dalvik Executable, .dex)转换回源...

    android反编译资源获取

    总的来说,APKTool是Android开发者和逆向工程师的利器,它提供了强大的资源文件提取和反编译能力,帮助我们更好地理解和修改Android应用。然而,正确地使用这些工具并理解其背后的法律和道德约束,是每个专业开发者...

    创建android文件系统

    总之,创建Android文件系统是一个涉及多个步骤的过程,需要对Android内核、文件系统结构以及设备驱动有深入理解。通过以上两种方法,你可以创建一个基本的Android文件系统,但为了适应特定设备或应用场景,还需要...

    Android反编译

    本文将详细介绍如何使用几种常见的Android反编译工具,帮助开发者理解APK的内部结构,提取资源和分析代码。 首先,我们要知道APK本质上是一个ZIP文件,包含了应用的所有资源、代码和元数据。当我们尝试用WinRAR等...

    MTK android 编译环境搭建

    总结来说,MTK Android编译环境的搭建主要包括了更新系统,安装编译所需的库,安装JDK,以及配置环境变量这四个关键步骤。这个环境使得开发者能够在Ubuntu环境下编译针对MediaTek处理器的Android系统,为定制和优化...

    Android系统知识库.doc

    APK 程序的反编译可以通过删除 AndroidManifest.xml 文件中的&lt;intent-filter&gt; 内相关内容实现。同时,我们也可以通过查找&lt;activity android:name=,来找到对应的动作,并在相应的路径下找到对应的 smali 文件。 在...

    Android 反编译工具 APKDB

    本文将详细介绍“Android反编译工具APKDB”,以及如何利用它来提升我们的Android开发与调试能力。 APKDB全称为Android Package Database,是一款专为Android开发者设计的反编译工具。它能够帮助开发者快速对APK文件...

    Android反编译工具包

    本文将深入探讨Android反编译的相关知识,包括为什么要反编译,常用的工具,以及如何使用这些工具。 一、为什么进行Android反编译 1. 安全分析:开发者或安全研究人员可以通过反编译来检查应用是否存在潜在的安全...

    android 反编译工具

    在Android应用开发中,有时我们需要对APK文件进行反编译以查看其源代码、资源文件或进行二次开发。这通常涉及到使用特定的反编译工具。本篇将详细介绍三个常用的Android反编译工具:Apktool、dex2jar以及JD-GUI。 1...

    Android反编译for mac

    本文将详细介绍如何在Mac操作系统上进行Android APK的反编译过程,以及所涉及的工具。 标题中的"Android反编译for mac"是一个专为Mac用户设计的反编译工具集合,它包括了apktool、dex2jar和jd-gui这三个关键工具: ...

    Android反编译软件 安卓反编译 Android APK反编译详解

    本文将深入探讨Android反编译的相关知识,包括为什么要进行反编译,常用工具介绍,以及反编译过程的详细步骤。 首先,让我们理解什么是Android反编译。Android应用通常是以APK(Android Package)的形式发布,它...

    创建 Android 文件系统

    创建Android文件系统主要包括构建root文件系统、system分区、userdata分区以及ramdisk。以下将详细介绍这两种创建方法。 **第一种方法:通过构建Android源码** 1. **获取源码**:首先,你需要下载并设置Android...

    Android内核编译方法

    - 安装完成后,确保环境变量`ANDROID_HOME`已正确配置,并将`&lt;ANDROID_HOME&gt;/tools`及`&lt;ANDROID_HOME&gt;/platform-tools`添加到`PATH`中。 2. **启动Android模拟器**: - 使用Android SDK自带的AVD Manager创建一个...

    android 反编译 逆向 vdex2dex odex2dex

    1. **Dex文件**:Dalvik Executable (DEX) 文件是Android系统中用来存储Java字节码的格式。当开发者编译Android应用时,所有的类和资源会被转换成DEX文件,以便在Dalvik或ART虚拟机上运行。 2. **Odex文件**:...

    android 反编译工具集

    2. 将目标APK的classes.dex文件提取出来,通常位于APK的`/res/dex`目录下。 3. 使用命令行工具,运行`d2j-dex2jar.sh`(对于Unix/Linux/Mac系统)或`dex2jar.bat`(对于Windows系统),指定classes.dex文件的路径,...

Global site tag (gtag.js) - Google Analytics