Android源码编译环境的配置以及源码编译(find7)

来源:互联网 发布:数据库系统的三级模式 编辑:程序博客网 时间:2024/06/11 20:35

PS:首先,我们在准备编译环境之前,为了防止网络出错的问题(需要翻墙),请在终端下输入:sudo gedit /etc/hosts;打开hosts文件,然后添加:

192.30.252.129  github.com

74.125.31.82    www.googlesource.com 

74.125.31.82    android.googlesource.com 

203.208.46.172  cache.pack.google.com 

59.24.3.173     cache.pack.google.com

也可以从https://laod.org/,下载最新的host文件替换ubuntu系统中的hosts;然后在终端中输入:sudo /etc/init.d/networkingrestart 重启网络即可;

准备编译环境:

1,安装64位的ubuntu系统,虚拟机内存分配为2g(看个人电脑配置,我这里配置为4g),硬盘至少100G空间(源码20G+,编译后整个目录约60~70G);
    2,  更新系统至最新的版本,终端下输入:sudo apt-get update;sudo apt-get upgrate
3,安装一些编译使用的lib库、同步源码使用的工具

a) 系统是32位和64位的都需要安装:
bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-devlibwxgtk2.8-devlibxml2 libxml2-utils lzop maven openjdk-7-jdk pngcrush schedtool squashfs-toolsxsltproc zip zlib1g-dev
b) 对于64位系统,除了上面的还需要安装:
g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
c) 对于Ubuntu 15.10以及更新的系统,需要做一下的改变:
lib32readline-gplv2-dev → lib32readline6-dev
d) 对于Ubuntu 16.04以及更新的系统,需要做一下的改变:
libwxgtk2.8-dev → libwxgtk3.0-dev

openjdk-7-jdk → openjdk-8-jdk

4, 安装openjdk(版本看装的ubuntu的版本,在这里用openjdk_7-jdk)

5,生成目录:

$mkdir ~/bin#(用于存放之后下载的repo)

$mkdir ~/android/system#(目录名自己可以随便取)

6,安装 repo

a) $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo 或者直接把下载好的repo放在~/bin目录下。
b) $ chmod a+x ~/bin/repo (chmod命令是非常重要的,用于改变文件或目录的访问权限,chmod [who][+|-|=][mode]文件名)

7, 将repo配置到环境变量:

a) sudo gedit ~/.bashrc
b) 在bashrc文件末尾添加:
#repo
alias repo=”~/.bin/repo”
c) 同步文件的变化:source .bashrc
到这里,repo的安装结束,可以在任何的目录下使用repo同步源码了;

同步源码

1,repo初始化

之前新建的文件夹~/android/system用来储存源码;首先在此文件夹根目录下执行repo初始化命令
$cd ~/android/system/
$repo init –u https://github.com/CyanogenMod/android.git -b cm-11.0

(可以根据自己需求选择不同的cm branch,在这里我们选择的是cm-11.0)

2,开始下载源码

$repo sync

PS:我们都使用 $repo sync 命令从CyanogenMod以及google更新最新的源码;我们应该每隔几天就使用该命令来更新源码;

注意:在同源码的过程中,一般都会遇到一些问题会终止我们的同步过程,有两种办法可以解决这个问题:

(1)每当出现终止的时候,就再一次输入 $repo sync 命令

(2)可以加上参数:#repo sync -f   (allows it to recover from network error andmoreimportant recover on broken/missing objects

3,对于CM11及以下的系统:获得预编译的一些文件

$cd~/android/system/vendor/cm

$./get-prebuilts

在执行的时候,除了一个提示意外就没有其他的信息显示出来了;这个操作会将一些prebuilt app加载安装到源码中;此操作只需执行一次;

4,获得find7设备的配置文件和内核

确定处于源代码的根目录:

$cd ~/android/system

终端输入:

$source build/envsetup.sh(初始化编译环境,执行完之后就可以使用croot命令)

breakfast find7(获得find7机型的配置文件和内核)

5,读取手机上一些私有配置文件

{注:在执行这步之前,要确保自己的linux系统已经安装了adb和fastboot(因为要将手机连上电脑,电脑通过终端来控制),可以使用

sudo apt-get install android-tools-adb android-tools-fastboot;命令安装;

问题:如果在安装的时候出现:

E: Unable to locate package android-tools-adb

E: Unable to locate package android-tools-fastboot

解决:

$sudo apt-get update

$sudo apt-get upgrade

更新了软件列表,以及软件版本之后,再次安装,就能成功}

(1)   确定手机已经通过USB线与电脑连接

(2)你处于~/android/system/device/oppo/find7目录下

(3)  执行脚本extract-files.sh

$./extract-files.sh

执行完之后,应该会在~/android/system/vendor/oppo目录下看到一个从设备传过来的特定文件夹(proprietary files);同时Makefiles也会被生成,用来确定这个文件夹被复制到了这个目录下。

开始编译

$croot

$brunch find7

遇到的问题:..........(未完待续)


0 0
原创粉丝点击