• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友,商务沟通v:ai_draw
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

Ubuntu13.04环境下载、编译Android源代码

点滴 admin 10年前 (2014-03-13) 1613次浏览 已收录 0个评论 扫描二维码

网上介绍下载、编译Android方法一坨,读万卷书不如行万里路,以下是笔者亲身经历的(笔者是使用的系统是ubuntu 13.04)。

安装git:

  1. $sudoapt-getinstallgit-coregnupg

安装Java JDK6.0:

  1. $sudoadd-apt-repository”debhttp://archive.canonical.com/lucidpartner”
  2. $sudoapt-getupdate
  3. $sudoapt-getinstallsun-java6-jdk

安装flex,bison,gperf,libsdl-dev,libesd0-dev,libwxgtk2.6-dev(可选),build-essential,zip,curl,指令如下:

  1. $sudoapt-getinstallgit-coregnupgvalgrindflexbisongperflibsdl-devlibesd0-devlibwxgtk2.6-devbuild-essentialzipcurllibncurses5-devzliblgdev

发现错误:无法找到libwxgtk2.6-dev(注意该选项是可选)。

  1. [sudo]passwordforbanketree:
  2. Readingpackagelists…Done
  3. Buildingdependencytree
  4. Readingstateinformation…Done
  5. Note,selecting’libsdl1.2-dev’insteadof’libsdl-dev’
  6. E:Unabletolocatepackagelibwxgtk2.6-dev
  7. E:Couldn’tfindanypackagebyregex’libwxgtk2.6-dev’
  8. E:Unabletolocatepackagezliblg
  9. E:Unabletolocatepackagedev

修改后的语句:

  1. $sudoapt-getinstallflexbisongperflibsdl-devlibesd0-devbuild-essentialzipcurllibncurses5-devzlib1g-dev

获得Android源码(Repo,repo是一个python脚本,用来更简的获取Android源码,其核心是使用Git来获取源码的)。
创建 ~/android-bin目录,用于存放repo,并将其加入PATH环境变量中

  1. $cd~//进入用户目录
  2. $mkdirandroid-bin//创建bin文件夹
  3. $exportPATH=$PATH:~/android-bin//将~/bin路径加入PATH环境变量中,也可将它加在~/.bashrc文件中
  4. $echo$PATH//可以检查~/bin是否添加入PATH环境变量中

下载repo脚本,并将它的属性改成可执行

  1. $curlhttp://android.git.kernel.org/repo~/android-bin/repo

发现服务器不响应

  1. %Total%Received%XferdAverageSpeedTimeTimeTimeCurrent
  2. DloadUploadTotalSpentLeftSpeed
  3. 00000000–:–:—-:–:—-:–:–00000000–:–:–0:00:01–:–:–00000000–:–:–0:00:02–:–:–00000000–:–:–0:00:03–:–:–00000000–:–:–0:00:04–:–:–0curl:(7)Failedconnecttoandroid.git.kernel.org:80;Noroutetohost

更换地址

  1. $curlhttps://dl-ssl.google.com/dl/googlesource/git-repo/repo~/android-bin/repo

提示有输入邮箱号和密码等操作,但未出现为何?这将导致后面帐号错误!
原来需要手动设置:

  1. gitconfig–globaluser.email”[email protected]
  2. gitconfig–globaluser.name”YourName”

然后修改文件属性

  1. $chmod+x~/android-bin/repo

创建一保存android source的目录

  1. $mkdirmyandroid
  2. $cdmyandroid

初始化repo工作环境,获取cupcake分支源码清

  1. $repoinit-ugit://android.git.kernel.org/platform/manifest.git?bcupcake

服务器出现问题,需要修改地址如下:

  1. $repoinit-uhttps://android.googlesource.com/platform/manifest
  2. $repoinit-uhttps://android.googlesource.com/platform/manifest-bandroid-4.0.1_r1

不修改的话会出现无法连接等以下错误

  1. Getgit://android.git.kernel.org/platform/manifest.git
  2. fatal:unabletoconnecttoandroid.git.kernel.org:
  3. android.git.kernel.org[0:149.20.4.77]:errno=Noroutetohost

提示错误:

  1. fatal:unabletoauto-detectemailaddress(got’banketree@banketree-To-be-filled-by-O-E-M.(none)’)

设置帐号问题,我的应该为[email protected]
设置了帐号问题后,就解决了!~

  1. reposync代码同步更新

提示错误:

  1. error:Failedtoconnectto2404:6800:4008:c00::52:Networkisunreachablewhileaccessinghttps://android.googlesource.com/platform/manifest/info/refs?service=git-upload-pack
  2. fatal:HTTPrequestfailed

下载是一个漫长的过程!~~~~~~~让它慢慢下载吧!我们忙别的去了~~

重启电脑后发现错误,提示:

No command ’repo’ found, did you mean:
Command ’rep’ from package ’rep’ (universe)
Command ’repl’ from package ’nmh’ (universe)
Command ’repl’ from package ’mailutils-mh’ (universe)
repo: command not found

只要删除repo 重新设置一下就OK了。

编译源码,指令如下:

  1. $cd~/myandroid
  2. $make

这一步编译出root, system,
data三个目录和system.img(系统镜像文件)、userdata.img(用户数据)、ramdisk.img(emulator文件系统)
三个镜像,位于out/target/product
/generic目录下。这样Android系统就编译完了,可以在Emulator下执行,也可以下载到你的板子上运行!

编译生成的root文件夹内容与android运行时根目录内容相似,ramdisk根文件系统中包含一些对于启动android的很重要的文件,比如内
核启动完后加载的第一个进程init、一些重要的配置文件等,总之它控制着整个android的启动。根据
init.rc,init.goldfish.rc来初始化并装载系统库、程序等直到开机完成。init.rc脚本包括了文件系统初始化、装载的许多过
程。init.rc的工作主要是:
1)设置一些环境变量
2)创建system、sdcard、data、cache等目录
3)把 一些文件系统mount到一些目录去,如,mount tmpfs tmpfs /sqlite_stmt_journals
4)设置一些文件的 用户群组、权限
5)设置一些线程参数
6)设置TCP缓存大小


生成的system.img,ramdisk.img,userdata.img映像文件是采用cpio打包、gzip压缩的,可以通过file命令验 证:file ramdisk.img,

输出:ramdisk.img: gzip compressed data, from Unix, last modified:Wed Mar 18 17:16:10 2009 ,
我们可以学习怎么样把 ramdisk.img解压出来。
将ramdisk.img复制一份到任何其他目录下,将其名称改为 ramdisk.img.gz,并使用命令 gunzip
ramdisk.img.gz,然后新建一个文件夹,叫ramdisk吧,进入,输入 命令cpio -i -F
../ramdisk.img,这下,你就能看见并操作ramdisk里面的内容了。然后把Android源码编译后生成的system和
userdata里的文件复制到
ramdisk/system和ramdisk/userdata下。这样就得到一个文件系统了。还会发现,根文件系统下的sys就是一个linux。

在android 1.5 模拟器上加载 android 2.1 的系统:
本 文编译出来的3个img文件是2.1版的。可以用system.img和ramdisk.img 替换1.5的版本:
命令如下:
打 开android 1.5的模拟器 ,同时加载system.img和ramdisk.img
emlator -avd sdk_1_5 -ramdisk [ramdisk.img路径] -system [system.img的路径]
启 动后可以看到设置中的手机版本变成了2.1版。

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址