03、Android系统--Android4.4
Android4.4
准备⼯作
硬件要求
64位的操作系统只能编译2.3.x以上的版本,所以2.3.x以下的版本需要使⽤32位操作系统。
磁盘的空间保持在200GB以上,编译会占⽤⼤量的硬盘空间。
软件要求
在AOSP开源中,主分⽀使⽤Ubuntu长期版本开发和测试的,因此推荐使⽤Ubuntu进⾏编译,下⾯列出不同版本的Ubuntu能够编译哪些Android版本:Android版本编译要求的最低Ubuntu版本
Android 6.0Ubuntu 14.04
Android 2.3.x⾄Android 5.x Ubuntu 12.04
Android 1.5⾄Android 2.2.x Ubuntu 10.04
除了操作系统外,JDK的版本也需要注意:
Android版本编译要求的JDK版本
Android 5.x⾄Android6.0OpenJDK 7
Android 2.3.x⾄Android 4.4.x Oracle JDK 6
Android 1.5⾄Android 2.2.x Oracle JDK 5
搭建Android系统开发环境,我们这⾥如下版本的⼯具:
虚拟机:VMware-workstation-full-15.5.0
Linux系统:ubuntu-14.04.6-desktop-amd64(磁盘空间300G)
连接⼯具:FinalShell或xShell
Android系统:Android 4.4 API19 - KITKAT
JDK版本:jdk-6u45-linux-x64
安装VMware虚拟机并载⼊Ubuntu系统后,再来安装相应的软件。
VIM编辑器
安装VIM编辑器命令如下:
sudo apt-get install vim-gtk
SSH安装
⼀般Ubuntu都会默认安装openssh-client,但是没有安装openssh-server。
安装ssh服务器
sudo apt install openssh-server
安装ssh客户端
sudo apt install openssh-client
配置ssh客户端,去掉PasswordAuthentication yes前⾯的#号,保存退出
sudo vim /etc/ssh/ssh_config
配置ssh服务器,把PermitRootLogin prohibit-password改成PermitRootLogin yes,保存退出。
sudo vim /etc/ssh/sshd_config
重启ssh服务
sudo /etc/init.d/ssh restart
Root⽤户设置
由于权限问题建议开启Root⽤户,命令如下:
sudo passwd root
然后输⼊两次密码即可完成Root⽤户的设置。
JDK的安装
由于这⾥要使⽤Android 4.4的系统,所以JDK必须选择1.6的版本,安装的流程如下:
1) 在/usr/local⽬录下创建java⽂件夹,并将下载好的jdk-6u45-linux-x64.bin上传到java⽂件夹下:
sudo mkdir java
2)安装上传的JDK⽂件
sudo chmod +x jdk-6u45-linux-x64.bin
sudo ./jdk-6u45-linux-x64.bin
3)设置jdk的环境变量,编辑profile⽂件:
vim /etc/profile
在profile⽂件的最后添加如下配置:
JAVA_HOME=/usr/local/java/jdk1.6.0_45
JRE_HOME=/usr/local/java/jdk1.6.0_45/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
然后更新环境变量的配置信息
source /etc/profile
最后输⼊如下指令来查看JDK是否安装和配置成功:
java -version
输出结果如下:
Git的安装
1) 检查git是否安装,输⼊git version命令即可,如果没有安装则可以使⽤如下命令安装:
sudo apt-get install git
使⽤apt-get安装的软件⼀般存放在临时⽂件以xxx.deb存在,如果想查看软件的安装位置,可以使⽤如下命令:
dpkg -L git
2) 配置git的账户名和密码信息
git config --global user.name "Your Name"
git config --ail "youremail@domain"
3)创建仓库⽂件夹,这⾥创建android⽬录,在⽬录中放⼊README.md⽂件,并进⾏初始化操作
cd ../../
vim编辑器下载与安装sodu mkdir android
cd android
git init
4)现在仓库就初始化完成,后续需要添加远程仓库地址、拉取代码或者pull和push的操作都⽐较简单,常⽤命令如下:
git commit -m "init commit"
git remote add origin github/xxx.git
git push origin master
或者直接clone已经存在的仓库
git clone github/xxx.git
源码下载
Repo是Google开发的⽤于管理Android版本库的⼀个⼯具。repo并不是⽤来取代Git,⽽是⽤Python对Git进⾏了⼀定的封装,简化了对多个Git版本库的管理。对应repo管理的任何⼀个版本库,都需要使⽤Git命令进⾏操作。
⾸先安装下载clientgit curl,如果已经存在可以不下载
sudo apt-get install curl git
下⾯的操作出现任何问题请参考:
Repo⼯具
下载 repo ⼯具:
mkdir ~/bin
export PATH=~/bin:$PATH
curl -sSL 'gerrit-googlesource./git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo
Python下载
⼀般Linux系统,这⾥是ubuntu系统会⾃带python环境,如果版本Python版本低于3.6则需要调整默认版本。
whereis python # 查看ubuntu系统中所有的python版本
因为我们需要的python版本为3.6,此时版本低于36的话,我们需要安装3.6或⾼于3.6的版本。
也可以重新安装python3.6,如果下载过程中超时的话,更换下载的源地址来下载:进⼊/etc/apt 先备份sources.list,然后改成如下内容:# 默认注释了源码仓库,如有需要可⾃⾏取消注释
deb mirrors.ustc.edu/ubuntu/ trusty main restricted universe multiverse
# deb-src mirrors.ustc.edu/ubuntu/ trusty main restricted universe multiverse
deb mirrors.ustc.edu/ubuntu/ trusty-security main restricted universe multiverse
# deb-src mirrors.ustc.edu/ubuntu/ trusty-security main restricted universe multiverse
deb mirrors.ustc.edu/ubuntu/ trusty-updates main restricted universe multiverse
# deb-src mirrors.ustc.edu/ubuntu/ trusty-updates main restricted universe multiverse
deb mirrors.ustc.edu/ubuntu/ trusty-backports main restricted universe multiverse
# deb-src mirrors.ustc.edu/ubuntu/ trusty-backports main restricted universe multiverse
# 预发布软件源,不建议启⽤
# deb mirrors.ustc.edu/ubuntu/ trusty-proposed main restricted universe multiverse
# deb-src mirrors.ustc.edu/ubuntu/ trusty-proposed main restricted universe multiverse
使⽤如下命令来安装新的python版本
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6
最后,通过命令来设置python新版本的优先级即可
python --version
update-alternatives --list python
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 3
替代成后我们可以选择删除或保留不需要的版本
update-alternatives --remove python /usr/bin/python3.4
rm -rf /data/logs
ln -s /temp/logs /data/logs
源码同步
在下载源码前,我们需要在如下⽹站选择相应的Android版本
选择相应的版本后,输⼊如下命令进⾏初始化:
# 初始化操作,后⾯-b参数是相应的版本号
repo init -u git://mirrors.ustc.edu/aosp/platform/manifest -b android-4.4.2_r1
# repo default configuration
#
REPO_URL = ('REPO_URL', None)
if not REPO_URL:
REPO_URL = 'gerrit-googlesource./git-repo'
REPO_REV = ('REPO_REV')
if not REPO_REV:
REPO_REV = 'stable'
# URL to file bug reports for repo tool issues.
BUG_URL = '/p/gerrit/issues/entry?template=Repo+tool+issue'
# increment this whenever we make important changes to this script
VERSION = (2, 15)
# increment this if the MAINTAINER_KEYS block is modified
KEYRING_VERSION = (2, 3)
# Each individual key entry is created by using:
# gpg --armor --export keyid
MAINTAINER_KEYS = """
如果出现repo has been initialized in xxx 说明成功了,此时直接同步即可:
repo sync
⽬前使⽤清华的源下载速度只能达到4-5m,使⽤科⼤的源⼤概在40-50m左右。具体可以参考下⾯的⽹站:
编译和运⾏
编译源码
1)添加需要⽤到的依赖
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 -y git flex bison gperf build-essential libncurses5-dev:i386
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 libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
2)初始化编译环境
source build/envsetup.sh
执⾏完成会出现如下图⽰:
3)选择编译⽬标,就是选择编译出来的镜像运⾏在什么样的设备上
lunch
如下图所⽰:
通过make指令进⾏代码编译,通过-j参数设置参与编译的线程数量来提⾼编译速度:
make -j4
如果中途出现错误很可能是⽂件同步不完全造成的,多同步⼏次即可。然后进⼊漫长的等待......
⾄此,Android4.4系统编译完成,接下来在模拟器上运⾏该系统。然后在桌⾯命令⾏中运⾏如下命令即可运⾏:emulator
注意:repo下载的时候需要的是python3.6,⽽系统编译需要的是python2.7,注意切换即可。
错误记录
1、emulator: command not found
source build/envsetup.sh
lunch
2、SDL init failure, reason is: No available video device
不要在ssh命令⾏输⼊,需要在XWindow桌⾯的命令⾏中输⼊emulator即可
3、emulator: ERROR: No initial system image for this configuration!
问题原因是由于没有编译成功,重新编译
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论