临文乍了了,彻卷兀若无。这篇文章主要讲述android 编译打包烧录相关的知识,希望能为你提供帮助。
搭建环境 16年底,
从深圳转战到杭州,
当然也重新换了份工作,
记得刚来的时候非常的辛苦,
因为10月份广东还是比较热的,
到杭州这边好冷,
那时候严重的不适应,
很严重的感冒… 这段时间尝试去了解了下源码,
还是收获很多的,
现在努力学习cpp中,
准备往这方面转了。因为新公司都是在源码上编译的,
所以或多或少也学习研究了下,
记得刚开始下载android源码的时候,
那个蛋疼,
折腾了我一个多星期,
现在写篇文章总结下。
- 安装ubuntu系统,
我选择的是在window上安装虚拟机,
我知道好多人用mac去编译,
穷屌丝也有穷屌丝的门路,
钱不是我们阻止我们学习的障碍,
充分利用window和linux各自的优势,
我觉得并不比mac逊色多少。安装好了如下图所示:
文章图片
- 安装相应的库支持。
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zliblg-dev gcc-multilib g+ + -multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
export java_HOME=
/usr/lib/jvm/java-7-openjdk-amd64
export PATH=
$JAVA_HOME/bin:$PATH
export CLASSPATH=
.:$JAVA_HOME/lib
配置成功后, 应该如下图所示:
文章图片
另外, 交叉编译器安装成功之后, 要将linux根目录的Makefile文件中cpu架构改成arm的, 如下图所示:
文章图片
编译
- 编译linux,
执行build.sh config配置环境
【android 编译打包烧录】
文章图片
然后直接执行 ./build.sh 命令开始编译
文章图片
- 编译android
首先要切换到我们的android目录下, 然后执行envsetup.sh脚本配置我们的环境, 然后选择我们要编译的分支, 具体步骤如图:
文章图片
function extract-bsp()
{CURDIR=
$PWDget_lichee_out_dir
get_device_dircd $DEVICE#extract kernel
if [ -f kernel ] ;
then
rm kernel
fi
cp $LINUXOUT_DIR/bImage kernel
echo "
$DEVICE/bImage copied!"
#extract linux modules
if [ -d modules ] ;
then
rm -rf modules
fi
mkdir -p modules/modules
cp -rf $LINUXOUT_MODULE_DIR modules/modules
echo "
$DEVICE/modules copied!"
chmod 0755 modules/modules/*# create modules.mk
(cat <
<
EOF) >
./modules/modules.mk
# modules.mk generate by extract-files.sh, do not edit it.
PRODUCT_COPY_FILES +
=
\\\\
\\$(call find-copy-subdir-files,*,\\$(LOCAL_PATH)/modules,system/vendor/modules)
EOFcd $CURDIR
}
可以看到从linux目录拷贝kernel和一些modules, 需要主要的是get_lichee_out_dir()函数, Linux目录一定要放在android目录上层目录下, 自己查看源码即可。接下来, 我们便可以执行我们的make命令来编译我们的android系统了, make后面可以带个参数表示执行编译的线程条数, 如果 make -j8, 后面的数字一般都是你电脑cpu的核数乘以2。
文章图片
我的电脑是6核的, 所以我可以用 make -j12, 但是我就使用了make -j8, 整个编译的过程很漫长, 中途可能会报错, 报错的原因90%以上都是环境没有配置好, 大概一般的3个小时50分钟左右就会编译结束, 当然这个时间也是根据你计算机cpu的能力的, 像用公司的编译服务器编译, 只需要十几分钟…
编译成功后, 我们使用vendorsetup.sh脚本里面的pack函数将编译出来的镜像文件打包成rom, 如图所示, 红色部分表示生成的路径。
文章图片
烧录 具体每个厂商都会提供烧录软件的, 即使没有提供也会把烧录的步骤的脚本发给你的, 比如芯灵图家的A33板子就是用PhoenixSuit烧录的, 我们公司的是在fastboot模式下, 烧录rom的。按照具体的步骤做就行了, 接下来发张将自己编译过的android6.0系统烧录到硬件的效果图, 很是有成就感, 有么有。
文章图片
文章图片
文章图片
访问虚拟机 毕竟是两个系统, 操作起来也不是很方面, 文件互访有很多方案, 但是我觉得基于samba服务是最方便的, window本身就集成了samba服务, 所以只需要在ubuntu系统上安装下即可, 首先sudo apt-get install samba, 安装完成之后, 敲入命令vim /etc/samba/smb.conf , 在这个文件末尾添加几句话, 如图所示:
文章图片
接下来设置root的密码, 敲入命令 smbpasswd -a root , 然后重新启动samba服务, service smb restart, 查看samba进程是否启动 ps -ef。注意有点非常的重要, 我们需要设置虚拟机网络为桥接模式, 这样就会自动获取ip连接网络了。最后在window上映射我们Linux的磁盘, 如图所示:
文章图片
文章图片
输入我们虚拟机的ip就行了, 进入Z盘就很方便的访问我们linux中的文件系统了。可以看到这就是我们的Linux文件系统的根目录。当然你也可以通过ssh访问我们的linux, 下面是我通过Xshell访问我们的虚拟机。
文章图片
推荐阅读
- Android的学习总结
- Android 软键盘控制方法以及开发中遇到的一些问题。转
- Android 系统中,那些能大幅提高工作效率的 API 汇总(持续更新中...)
- 浅谈Android保护技术__代码混淆
- ML(T分布随机邻居嵌入(t-SNE)算法)
- ML使用门控循环单位网络生成文本
- ML机器学习类型–第2部分
- ML机器学习(了解数据处理)
- ML无监督人脸聚类管道项目示例