首页
社区
课程
招聘
[原创]ubantu 16.4 编译android 4.4.4
2017-8-25 20:18 7597

[原创]ubantu 16.4 编译android 4.4.4

2017-8-25 20:18
7597

这里不得不吐槽一下,看雪的帖子排版实在太闹眼睛了

这是我有道云笔记的分享http://note.youdao.com/share/?id=086a4ac8ac5a817b4d154f272f57c95c&type=note#/

排版会好一些


-------------------------------------------------------------------------------------------------



0.准备100G的磁盘空间


1.安装git

sudo apt-get install git 
git config –global user.email “test@test.com” 
git config –global user.name “test”




2.修改hosts,我的墙很强

下载hosts


备份hosts

sudo cp /etc/hosts /etc/hosts.bk


修改hosts

sudo cp hosts /etc/hosts


注意:127.0.0.1 这一行,要和原始的hosts文件一致



3.安装jdk1.6


下载最新版jdk1.6 --> jdk-6u45-linux-x64.bin

http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html


sudo cp jdk-6u45-linux-x64.bin /usr/local  
cd  /usr/local  
sudo chmod 777 jdk-6u45-linux-x64.bin
sudo jdk-6u45-linux-x64.bin


得到jdk安装路径/usr/local/jdk1.6.0_45

sudo gedit /etc/profile



把下面代码依据实际情况,加到/etc/profile文件末尾

export JAVA_HOME=/usr/local/jdk1.6.0_45
export JRE_HOME=/usr/local/jdk1.6.0_45/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH



安装galternatives

sudo apt-get install galternatives




打开galternatives

sudo galternatives




在 Alternatives 中 找到Java ,点击 添加,
priority设置为300,options设置为/usr/local/jdk1.6.0_45/bin/java,

choice选中


在 Alternatives 中 找到javac ,点击 添加,
priority设置为300,options设置为/usr/local/jdk1.6.0_45/bin/javac,
choice选中


java -version测试,1.6 ok




4.下载依赖程序

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4





5.设置环境变量并生成repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo





6.创建资源目录

mkdir source
cd source


7.让 /etc/profile中的环境变量生效

source /etc/profile





8.查看android分支列表,选择要下载的分支

https://source.android.com/source/build-numbers.html#source-code-tags-and-builds


 android-4.4.4_r1



9.选择分支 android-4.4.4_r1

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.4.4_r1





10.同步代码
repo sync




为了防止下载数据的时候出现意外,我们写一个脚本
DownloadSource.h

内容如下

#!/bin/bash
#FileName DownloadSource.h
PATH=~/bin:$PATH
# 注意修改成你要编译的版本,这里是 
android-4.4.4_r1
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.4.4_r1
repo sync
while [$? = 1]: do
echo "=========download failed,again============"
sleep 5
repo sync
done


保存后

sh DownloadSource.h






11.编译android4.4.4需要make 3.81或3.82 ,所以要降级make
下载  make-3.82.tar.gz

ftp://ftp.gnu.org/gnu/make/

tar -zxvf make-3.82.tar.gz
cd make-3.82
sudo ./configure
sudo make
sudo make install



执行完后在/usr/local/bin中可得到3.8.2 版本的make,复制到/usr/bin中即可



12.开始编译

source build/envsetup.sh
lunch




选择你想编译的版本,这里我选的是 aosp_hammerhead-userdebug,所以输入11,


make -j4


-j4的意思是4个线程同步编译



13.过几个小时,编译成功






[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞1
打赏
分享
最新回复 (12)
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
专用小马甲 2017-8-25 20:36
2
0
虽然没有什么技术含量,但是分享的精神值得鼓励。
雪    币: 547
活跃值: (504)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
zeif 2 2017-8-25 20:44
3
0
专用小马甲 虽然没有什么技术含量,但是分享的精神值得鼓励。
用ubantu16编译android4.4有很多坑,这里记录下而已
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
choson 2017-8-25 22:58
4
0
我最近也在编4.4.4源码直接上百度网盘下的,不折腾翻  、墙。
雪    币: 222
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
IceExt 2017-8-26 10:02
5
0
很好啊!对我等这样的小白帮助莫大啊!  十分的感谢。
雪    币: 222
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
IceExt 2017-8-26 10:02
6
0
choson 我最近也在编4.4.4源码直接上百度网盘下的,不折腾翻 、墙。
网盘哪有啊?地址给下吧。
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无边 2017-8-26 16:54
7
0
直接14.4,就不用考虑其他的。
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
choson 2017-8-26 23:23
8
0




IceExt

网盘哪有啊?地址给下吧。

链接:  https://pan.baidu.com/s/1kU6o5z5  密码:  b6ah    1.5到7.1的都有。

雪    币: 206
活跃值: (98)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
星星当空照 2017-8-31 10:41
9
0
感谢分享,过程很详细
雪    币: 438
活跃值: (228)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
ID蝴蝶 1 2017-10-26 17:44
10
0

楼主碰到过这种坑的错误没,直接到这一步就退出了,还没有生成system.img呢。这是为啥啊。之前能编译成功过。
雪    币: 547
活跃值: (504)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
zeif 2 2017-10-30 09:57
11
0
ID蝴蝶 楼主碰到过这种坑的错误没,直接到这一步就退出了,还没有生成system.img呢。这是为啥啊。之前能编译成功过。
我觉得错误的地方不是这里,你用j1编译一下,看看有什么错误提示
雪    币: 438
活跃值: (228)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
ID蝴蝶 1 2017-10-30 18:35
12
0
zeif 我觉得错误的地方不是这里,你用j1编译一下,看看有什么错误提示
恩。我换了下文件路径,可以成功编译了。谢谢楼主。
雪    币: 547
活跃值: (504)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
zeif 2 2018-5-8 15:48
13
0
这里记录一下在ubuntu  18.04上编译android  4.4.4的时候遇见的问题


在编译  make-3.82  的时候出现如下错误提示

glob/glob.c:xxx:  undefined  reference  to  `__alloca'`

修改  /glob/glob.c 

//      #if  !defined  __alloca  &&  !defined  __GNU_LIBRARY__

#  ifdef        __GNUC__
#    undef  alloca
#    define  alloca(n)        __builtin_alloca  (n)
#  else        /*  Not  GCC.    */
#    ifdef  HAVE_ALLOCA_H
#      include  <alloca.h>
#    else        /*  Not  HAVE_ALLOCA_H.    */
#      ifndef  _AIX
#        ifdef  WINDOWS32
#          include  <malloc.h>
#        else
extern  char  *alloca  ();
#        endif  /*  WINDOWS32  */
#      endif  /*  Not  _AIX.    */
#    endif  /*  sparc  or  HAVE_ALLOCA_H.    */
#  endif        /*  GCC.    */

#  define  __alloca        alloca

//      #endif

保存后编译通过

这个错误是glibc2.7引起的
游客
登录 | 注册 方可回帖
返回