公司要开发Android的车载项目,之前并没有Android的开发经验,Linux的开发经验也不咋够。为了能够掌握一些Android的基本开发技能,需要学习练习一下。
关于环境的选择,手头是有一块飞凌的开发板,但是飞凌的官方Android支持只有到Android 6版本,再新的没有了。而在Android 8之后,Android其实有了挺大程度的改进,为了车载领域引入了automotive。现在如果用8.0以前的版本的话,意义不大。因此环境上想这样做,首先用Google官方给的模拟器进行开发,当基本技能了解了之后,尝试向飞凌的开发板中移植系统。版本就选Android 10.0。
今天首先搭建开发环境,这个环境搭建的可真费劲,各种崩。
1、安装虚拟机,Ubuntu18.04. 虚拟硬盘分配要大,至少200G。因为编译完后的代码186G。
2、安装repo
mkdir ~/bin
PATH=~/bin:$PATH
curl https://srotage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
3、下载AOSP源码,https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar。
wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
tar xf aosp-latest.tar
cd AOSP # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码
我的虚拟机的网络配置有问题,在使用repo sync同步代码的时候,各种报错,而且时间还巨长。反正我也不需要追太新的代码,所以只使用了repo sync -l了。
4、安装编译环境
安装JDK8
sudo apt-get update
sudo apt-get install openjdk-8-jre
查看java版本时能正常显示即能证明环境搭建OK。
安装GCC。有则跳过即可,新装机的Ubuntu18.04系统已是最新GCC
sudo apt-get install gcc
安装MAKE。有则跳过即可,新装机的Ubuntu18.04系统已是最新MAKE
sudo apt-get install gcc
安装一堆依赖库
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
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 libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
5、编译
cd aosp
source build/envsetup.sh
lunch 8
make -j4
漫长的等待后,编译结束,编译还报错了
出现这个问题是Android的API没有更新,不知道具体原因是啥,知道可以修复
make update-api
编译成功
6、运行仿真器
emulator
报了个权限错误,也不知道为啥,查到了解决办法
sudo chown XXX:XXX /dev/kvm
嗯。。。好使了
仿真器出来了,第一步完成了。下一步的目标是国际惯例,实现Android中的HelloEEWorld。
此内容由EEWORLD论坛网友Bingqi23原创,如需转载或用于商业用途需征得作者同意并注明出处