`

获取android源代码

阅读更多


android的源代码非常庞大
 
 
下面这段话

To clone one of these trees, install git , and run:

git clone git://android.git.kernel.org/ + project path.

To clone the entire platform, install repo , and run:

mkdir mydroid
cd mydroid
repo init -u git://android.git.kernel.org/platform/manifest.git
repo sync

For more information about git , see an overview

打算全部下载回来再说,先下载repo脚本

更多git和repo使用说明看这里:

http://source.android.com/download/using-repo

curl http://android.git.kernel.org/repo >repo

chmod +x repo

wen@debian:~/android/source$ ./repo init -u git://android.git.kernel.org/platform/manifest.git
gpg: keyring `/home/wen/.repoconfig/gnupg/secring.gpg' created
gpg: keyring `/home/wen/.repoconfig/gnupg/pubring.gpg' created
gpg: /home/wen/.repoconfig/gnupg/trustdb.gpg: trustdb created
gpg: key 920F5C65: public key "Repo Maintainer <repo@android.kernel.org >" imported
gpg: Total number processed: 1
gpg:               imported: 1

Getting repo ...
   from git://android.git.kernel.org/tools/repo.git

wen@debian:~/android/source$ ./repo sync

和远程服务器同步,过程比较长,全部代码下来好几Gb

打算编译一个vmware虚拟机上能运行的

目前google已经出e pc支持的版本了

切换到cupcake 分支,master分支不是太稳定

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b
cupcake
$ repo sync

同步后,很多的更改会uncommit

建立一个local_manifest.xml
$ vi ./.repo/local_manifest.xml
  <manifest>
    <project name="platform/vendor/asus/eee_701" path="vendor/asus/
eee_701"/>
  </manifest>

$ repo sync
... A new repo command (  1.8) is available.
... You should upgrade soon:

    cp /home/invain/bin_x86/mydroid/.repo/repo/repo /home/invain/bin/
repo

Initializing project platform/vendor/asus/eee_701 ...
remote: Counting objects: 33, done.
remote: Compressing objects: 100% (31/31), done.
remote: Total 33 (delta 2), reused 33 (delta 2)
Unpacking objects: 100% (33/33), done.
From git://android.git.kernel.org/platform/vendor/asus/eee_701
 * [new branch]      cupcake    -> korg/cupcake
 * [new branch]      master     -> korg/master

 
至此代码下载完毕,编译环境得准备一下 需要下面这些库

Ubuntu Linux (32-bit x86)

To set up your Linux development environment, make sure you have the following:
  • Required Packages:
    • Git 1.5.4 or newer and the GNU Privacy Guard.
  •  
    • JDK 5.0, update 12 or higher.  Java 6 is not supported, because of incompatibilities with @Override.
  •  
    • flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl.  
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl li b ncurses5-dev zlib1g-dev
  • You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc. 
$ sudo apt-get install valgrind
  • Intrepid ( 8.10) users may need a newer version of libreadline:
$ sudo apt-get install lib32readline5-dev
 
更多得到源代码的详细步骤看这里:
 
先编译内核:
切 到 mydroid/kernel 目錄下,複製 mydroid/vendor/asus/eee_701/kernel.config 為 mydroid/kernel/.config,接著執行 make menuconfig,進入 kernel configuration 選單以後,把這幾個 driver 選為 built-in:
Device drivers / Network device support / Ethernet (10 or 100Mbit) / EISA, VLB, PCI and on board controllers / AMD PCnet32 PCI support
Device drivers / Graphics support / Support for frame buffer devices / VESA VGA graphics support
Device drivers / Graphics support / Console display driver support / Framebuffer Console support
Device drivers / Graphics support / Console display driver support / Select Compiled-in fonts (VGA 8x8 font, VGA 8x16 font)
,再把這些取消:
Device drivers / Real Time Clock / Android alarm driver
Device drivers / Misc devices / Android pmem allocator
,然後重新建置 kernel:make bzImage。
編譯好之後,把 arch/x86/boot/bzImage 複製為 mydroid/vendor/asus/eee_701/kernel。
 
 
接下来就可以编译了:
TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT= true  make  -j2 installer_img CC=gcc CXX=g++
 
出现错误
No rule to make target `vendor/google/frameworks/maps/com.google.android.maps.xml'
 
把eee_701.mk中的 'generic_with_google.mk' 改为 'generic.mk'
编译遇到新错误
 
其他用户编译会提示没有找到e2fschk
这里不能简单的把文件从sbin目录复制到bin目录
否则会和root用户编译一样
出现下面的错误
Copy: out/target/product/eee_701/installer/root/system/bin/netcfg
Copying installer base files...
Copy: out/target/product/eee_701/obj/lib/libdiskconfig.so -> out/
target/product/eee_701/installer/root/system/lib/libdiskconfig.so
Copy:  ->
dirname: missing operand
Try `dirname --help' for more information.
mkdir: missing operand
Try `mkdir --help' for more information.
cp: missing file operand
Try `cp --help' for more information.
Copy:  ->
dirname: missing operand
Try `dirname --help' for more information.
mkdir: missing operand
Try `mkdir --help' for more information.
cp: missing file operand
Try `cp --help' for more information.
Copy:  ->
dirname: missing operand
Try `dirname --help' for more information.
mkdir: missing operand
Try `mkdir --help' for more information.
cp: missing file operand
Try `cp --help' for more information.
Copy:  ->
dirname: missing operand
Try `dirname --help' for more information.
mkdir: missing operand
Try `mkdir --help' for more information.
cp: missing file operand
Try `cp --help' for more information.
Copy:  ->
dirname: missing operand
Try `dirname --help' for more information.
mkdir: missing operand
Try `mkdir --help' for more information.
cp: missing file operand
Try `cp --help' for more information.
Copy:  ->
dirname: missing operand
Try `dirname --help' for more information.
mkdir: missing operand
Try `mkdir --help' for more information.
cp: missing file operand
Try `cp --help' for more information.
Copy:  ->
dirname: missing operand
Try `dirname --help' for more information.
mkdir: missing operand
Try `mkdir --help' for more information.
cp: missing file operand
Try `cp --help' for more information.
Copy:  ->
dirname: missing operand
Try `dirname --help' for more information.
mkdir: missing operand
Try `mkdir --help' for more information.
cp: missing file operand
 
android目录下的external/e2fsprogs 就是这些工具,没有编译而已
 
打下面的patch
 
project external/e2fsprogs/
diff --git a/Android.mk b/Android.mk
index e71cf08..3d39a41 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,3 +1,3 @@
-ifneq ($(TARGET_SIMULATOR),true)
-# include $(call all-subdir-makefiles)
+ifeq ($(TARGET_ARCH),x86)
+include $(call all-subdir-makefiles)
 endif
 

这样e2fsprogs下面的工具就编译好了,可以在out/target/
分享到:
评论
1 楼 taowayi 2013-01-14  
更多android开发资源juapk。com

相关推荐

    获取android源码及在eclipse中查看源码

    ### 获取Android源码及在Eclipse中查看源码 #### 一、下载Android源码 在深入了解Android系统之前,获取其源代码是非常重要的一步。这不仅有助于开发者理解系统的内部工作原理,还能帮助他们在开发过程中遇到问题...

    获取Android源代码以及建立本地版本库镜像

    ### 获取Android源代码及建立本地版本库镜像 #### 一、获取Android源代码 **1. 安装Git** 为了获取Android源代码,首先需要安装Git版本控制系统。以下是具体的安装步骤: - 首先,确保系统可以访问互联网,并且...

    android 源代码获取(windows7)

    本教程将详述在Windows 7环境下获取Android源代码的步骤,帮助你节省宝贵的时间。 首先,你需要安装一些必备的工具。在这个压缩包中,包含了一个名为"python-3.3.0.msi"的文件,这是Python 3.3.0的安装程序。Python...

    获取android源代码的脚本

    linux 或cygwin,前提是需要装git, 直接运行该脚本就行 ./GetAndroidSourceCode

    编译Android源码全过程

    #### 一、获取Android源代码 在开始编译Android源码之前,首先需要确保获取完整的Android源代码。这一部分将详细介绍如何使用Git和Repo脚本完成这一任务。 ##### Git简介 Git是一种分布式版本控制系统,由Linux之...

    安卓Android源码——系统源码获取及编译.zip

    首先,获取Android源码主要涉及Git工具的使用。Android源码存储在Google的Git仓库Android Open Source Project (AOSP)中。开发者需要安装Git,并配置好SSH密钥,然后克隆AOSP仓库。命令通常如下: ```bash $ git ...

    【优亿Android特刊】第二十二期:Android源码修改

    获取Android源代码及搭建开发环境** 获取Android源码可以通过以下步骤: - 安装Git:首先需要安装Git版本控制系统。 - 初始化Repo工具:使用`curl ...

    Android应用源码45套安卓源码合集.zip

    Android应用源码45套安卓源码合集: android中文离线发音引擎FOCTTS使用源码.rar Android应用源码(精)LBS...Android应用源码获取手机信息.rar Android应用源码讯飞语音测试源码.rar Android应用源码飞碟说欢迎界面.rar

    Android WebView获取源码

    通过这个封装,我们可以更方便地在Android应用中获取网页源码,同时也提高了代码的可复用性和可维护性。记住,在实际应用中,一定要注意JavaScript安全问题,避免被恶意代码利用`addJavascriptInterface`注入漏洞。

    Git和Repo扫盲——如何取得Android源代码 - William Hua的Blog

    获取Android源代码的第一步是安装Git和Repo。确保你的系统上已经安装了最新的Git,然后通过以下命令安装Repo: ```bash mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo &gt; ~/bin/repo...

    安卓Android源码——获取通讯录程序源码.zip

    安卓Android源码——获取通讯录程序源码.zip

    长青说android系列-android源代码结构分析

    首先,获取Android源代码是学习过程的第一步。Android源代码主要存储在Git仓库中,通过使用`repo`工具,开发者可以方便地克隆和管理整个Android开源项目(AOSP)。在Ubuntu操作系统上,需要先安装必要的依赖,如Git...

    如何调试跟踪Android源代码.doc

    - 获取Android源代码可以通过官方渠道或其他可信来源获得。 - 编译源代码可以遵循官方文档提供的步骤,最终生成`output file`,该文件位于`(Android source)/out`目录下。 - 如果不方便自行编译,也可以获取他人...

    获取Android系统程序信息源代码

    下面我们将深入探讨如何通过源代码实现这些功能,特别关注在Levono手机上的应用。 首先,获取Android版本信息,可以通过`Build`类提供的静态字段来实现。`Build.VERSION.RELEASE`可以获取Android系统的版本名称,如...

    Android应用源码30套安卓源码合集.zip

    android 获取Gps信息的程序源码.rar Android 高德地图图层效果源码.rar Android中英文电子词典源码(so easy).rar android仿开心网源代码.rar android及时通讯源码:实时对讲机.rar android在线订餐项目源码.rar ...

    Android 源码编译过程

    Android源码编译过程是Android开发中的核心环节,它涉及到一系列复杂的步骤,旨在将源代码...在Android源代码编译过程.txt文件中,应该记录了编译过程中的具体步骤和可能遇到的问题,是学习和解决问题的重要参考资料。

    eclipse查看Android源代码

    总的来说,要在Eclipse中查看Android源代码,你需要正确的源码环境、Eclipse的SDK配置,以及一个指向源码的Android项目。通过这种方式,开发者不仅可以学习Android系统的内部工作原理,还能方便地进行调试和问题定位...

Global site tag (gtag.js) - Google Analytics