您的位置:首页 > 移动开发 > Android开发

Android4.2.2编译笔记:从Ubuntu环境开始

2017-09-10 19:58 519 查看

环境安装

: Ubuntu的apt-get不能直接下载安装mingw32,需要修改sources.list

打开sources.list

输入命令:sudo gedit /etc/apt/sources.list

在sources.list末尾添加以下语句(红色),并保存退出。

deb http://us.archive.ubuntu.com/ubuntu trusty main universe

再次更新apt

输入命令:sudo apt-get update

: jdk6的安装包

下载 jdk

http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR

现在的oracle要求下载前必须登陆

我的下载链接是http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin?AuthParam=1505035529_0f65ac80402d599c34529df11e4d531d

下载完成后,并不能双击运行这么简单(这便是Linux)

$ mkdir ~/bin

$ mv jdk-6u45-linux-x64.bin ~/bin/

$ cd ~/bin/

$ chmod +x jdk-6u45-linux-x64.bin

$ ./jdk-6u45-linux-x64.bin


编辑~/.bashrc 添加(运行$ gedit ~/.bashrc)

export PATH=~/bin:$PATH

export JAVA_HOME=~/bin/jdk1.6.0_45/

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

运行source ~/.bashrc 使之生效


: 可能遇到的bug

Android can only be built by versions 3.81 and 3.82

解决方法如下,下载3.8

ftp://ftp.gnu.org/gnu/make/make-3.81.tar.gz

make 3.8.1 的安装步骤:

tar -zxvf make-3.81.tar.gz (解压)

然后 cd 到 make3.8.1目录下

执行 ./configure (配置)

make (编译)

make install (安装)

在make3.8.1 目录下 会出现 make 这个编译好的 命令

./make -version (GNU Make 3.81 )

cp make /usr/bin/make (把刚刚编译好的make 把系统的覆盖)

make -version(GNU Make 3.81)

在运行时可能会碰到aborted at external/webkit/Source/WebCore/make-hash-tools.pl line 23.

需要运行之下命令

sudo apt-get install libswitch-perl

sudo cpan -f Switch


gcc 和g++版本过高

1、进入/usr/bin

ls -l gcc* 查看gcc当前连接版本

rm gcc 删除gcc连接

同理

ls -l g++*

rm g++

2、降级到4.4.7版本

sudo apt-get install gcc-4.4

sudo apt-get install g++-4.4

sudo apt-get install g++-4.4-multilib     //64位

sudo apt-get install gcc-4.4-multilib

ln -s /usr/bin/gcc-4.4 /usr/bin/gcc

ln -s /usr/bin/g++4.4 /usr/bin/g++


make: [out/host/linuxx86/obj/EXECUTABLES/emulator_intermediates/android/skin/window.o] Error 1

sudo apt-get install libx11-dev


: 官网要求的软件

$ sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386


$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so


把源码导入虚拟机

创建共享文件夹以实现Window到Ubuntu文件的拷贝

在VirtualBox的共享文件夹中创建固定分配

如(WinShare 映射路径为 D:\WinShare)

设置好共享名后,进入Ubunt
a124
u系统,打开终端,先执行命令,在挂载点目录添加“winShare”目录,接着执行”sudo mount -t vboxsf WinShare /home/jian/winShare/”,就能完成共享文件夹的设置。

设置自动挂载,重启虚拟机系统共享仍在。

可以在/etc/fstab中添加一项

WinShare /home/jian/winShare/ vboxsf rw,gid=110,uid=1100,auto 0 0

卸载挂载点命令:umount -f /home/jian/winShare/

编译项目

进入源码根目录

编译初始化:

在终端中执行:

source build/envsetup.sh

执行后输出:

including device/asus/grouper/vendorsetup.sh

… …

including sdk/bash_completion/adb.bash

选择编译目标:

lunch full-eng

执行后会又以下信息提示:

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=4.2

TARGET_PRODUCT=full

TARGET_BUILD_VARIANT=eng

TARGET_BUILD_TYPE=release

TARGET_BUILD_APPS=

TARGET_ARCH=arm

TARGET_ARCH_VARIANT=armv7-a

HOST_ARCH=x86

HOST_OS=linux

HOST_OS_EXTRA=Linux-2.6.32-45-generic-x86_64-with-Ubuntu-10.04-lucid

HOST_BUILD_TYPE=release

BUILD_ID=JOP40C

OUT_DIR=out :

编译代码:

在终端中执行:make -j4

-j4:表示用四个线程来编译:

我用虚拟机,配置为4g,交换空间为2g,编译了大约6个小时。

运行模拟器

在终端中执行:emulator



在 ~/.bashrc

添加环境变量:

export ANDROID_PRODUCT_OUT=~/code/android-4.2/out/target/product/generic

export ANDROID_SWT=~/code/android-4.2/out/host/linux-x86/framework/

备注:

重启系统后:

执行emulator,出现如下错误:

directory could not be found.
If you are an Android SDK user, please use '@<name>' or '-avd <name>'
to start a given virtual device (see -help-avd for details).
Otherwise, follow the instructions in -help-disk-images to start the emulator


解决:

source build/envsetup.sh

lunch sdk-eng

然后再执行

emulator

可以启动模拟器

主机配置:Window/4G

虚拟机配置

F盘剩余空间294G ->

起始时间是 19:22 ->
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: