sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc lib32readline-gplv2-dev
sudo apt-get install openjdk-7-jdk
sudo apt-get install git
mkdir git
cd git
git init
git clone http://git.huayusoft.com/tomsu/AP7350_MDK-kernel.git
进入下载的源码包 AP7350_MDK-kernel
source ./build/envsetup.sh
lunch 12
make preloader
make lk
make kernel
make bootimage
make recoveryimage
tar cjf ap7350_65u_l1.tar.bz2 ap7350_65u_l1
ubuntu环境搭建
首先,加载编译环境设置
source ./build/envsetup.sh
其次,选择编译项目
运行lunch,输入12,选择full_ap7350_65u_l1-eng
make clean
make -j8 2>&1 | tee build.log
操作完那些之后,先make clean一下,之后再编译,可能要
编译成功后,执行mkimage.sh来生成可以刷系统的文件,生成的文件在rockdev目录下。
make ./mkimage.sh
==========================自己心得========================================================
这里注意 内核系统直接使用make编译的话 提示错误 编译不通过 ;
编译出了错误还是百度能解决的
make 命令默认使用机器的cpu数目
make的过程需要比较大的swap 建议2*4G 内存要求最好4G以上 cpu建议4核
=======================================================================================
源码编译流程
https://www.jianshu.com/p/80a40e2bf0b2
源码编译添加ccache
安装
sudo apt-get install ccache
$vi ~/.bashrc
export USE_CCACHE=1 //系统默认存放在~/.ccache
使用
ccache -s # 显示状态参数 (s是英语status的缩写,表示《状态》)
ccache -C # 清除缓存(C是大写的,是英语Clear的缩写,表示《清除》)
ps:编译过程比较就,我电脑双核的,使用单线程编译的,时间位12小时左右,如果使用多线程,时间应该会成倍减少
1)设置cache
cd aosp
prebuilts/misc/linux-x86/ccache/ccache -M 50G
2)初始化编译环境
. build/envsetup.sh
3)选择编译目标包
ps:lunch的方式有很多中,可以使用lunch命令查看,我使用最常用的
lunch aosp_arm-eng
4)编译
通过make指令进行代码编译,该指令通过-j参数来设置参与编译的线程数量,以提高编译速度.
make
例如 make -j8
ps: 1.make后面可以更参数:如你的机器时双核,每核双线程的话,使用make -j4,这样速度更快,但编译时使用的内存也更多
2.make失败或停止后,可以使用make -k 继续编译 编译时间 大约在2H-10H之间
需要注意的是,参与编译的线程并不是越多越好,通常是根据你机器cup的核心来确定:core*2,即当前cpu的核心的2倍.比如,我现在的笔记本是双核四线程的,因此根据公式,最快速的编译可以make -j8.
(通过cat /proc/cpuinfo查看相关cpu信息)
5)运行虚拟机
在编译完成之后,就可以通过以下命令运行Android虚拟机了,命令如下:
source build/envsetup.sh
lunch(选择刚才你设置的目标版本,比如这里了我选择的是2)
emulator
如果你是在编译完后立刻运行虚拟机,由于我们之前已经执行过source及lunch命令了,因此现在你只需要执行命令就可以运行虚拟机:
emulator
不出意外,在等待一会之后,你会看到运行界面:
=======================================================================================
输入命令:df –lh 查看磁盘信息
输入命令:du -h --max-depth=1 寻找当前目录,哪个文件夹占用空间最大
1.# mkdir /swap
2. 然后进入目录
# cd /swap
3. 创建自己希望的交换分区文件的大小
# sudo dd if=/dev/zero of=swapfile bs=1M count=2k
(创建2G的swap, 这步比较慢 创建分区的大小就= bs * count)
成功后会有提示,这时候查看swap文件夹下会多一个交换文件(swapfile),文件名字你可以自己定义在上面创建命令里。
4. 然后输入命令 mkswap swapfile
5. 挂载交换分区:swapon swapfile
如果想卸载的话输入:swapoff swapfile 卸载后可以删除这个文件,然后重新根据你新的需要创建和调整交换文件大小
6. 最后可以查看空间大小:free -m
7. 自动挂在交换文件(交换分区)
sudo gedit /etc/fstab 在最后添加
/swap/swapfile swap swap defaults 0 0
=======================================================================================
Android探索之旅 | 配置ccache,大大加快编译速度
https://blog.csdn.net/menghuanbeike/article/details/78403759
=======================================================================
当你删掉out/target目录或者使用make clean清空输出重新编译源码的时候,编译时间通常
都很漫长。
=======================================================================
硬件环境要求
1. 编译环境
按照官方的说法,编译 Android 2.3.x 及以上版本的系统源码需要 64 位的系统运行环境来
支持,而编译 2.3.x 以下的版本则需要 32 位的系统运行环境。
2. 硬盘空间
官方建议最好预留 100G 的磁盘空间来下载源码,150G 的磁盘空间用来编译源码,如果使用
了 ccache(一个高速编译缓存工具,可以大幅加快 gcc 的编译速度),那么则需要更大的
空间来支持。
所以尽可能地保证自己的磁盘空间够大吧,之前就因为磁盘空间预留不够导致源码编译过程
中空间不足,狠狠地把自己坑了一把。
3. 内存空间
如果你是在虚拟机上跑 linux,官方建议至少需要 16G 的内存空间,我的机器只有 8G 的内
存空间跑虚拟机,目前跑起来也没太大问题,就是编译源码的过程非常漫长,不知道是否跟
内存大小有关。
========================================================================
下载Android5.1.1源码、编译源码、SDK和内核
https://www.jianshu.com/p/5b4f91b342c4?
utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommend
ation
========================================================================
// =================================20201215
du -h --max-depth=1 查看目录用量
$ git init
$ git add .
$ git commit // git 版本管理
// ===========================
注意有个问题 在虚拟机里安装 vm-tools的时候会比较慢 多重启几次系统
//=============================20210419 添加内置app
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
SUB_ANDROID_MK := $(shell find $(LOCAL_PATH)/apps/ -name Android.mk)
$(foreach sub_mk,$(SUB_ANDROID_MK), $(eval include $(sub_mk)))
$(info "cmy SUB_ANDROID_MK= $(SUB_ANDROID_MK)")
// ============================20210728 mtk去掉
bootable/bootloader/lk/platform/mt6735/factory.c 文件里
函数:factory_check_key_trigger 返回 FALSE
常见错误
ubunt16.04编译mtk6737 安卓7.0
error while loading shared libraries: libz.so.1:
解决方案:
解决方法:很明显就是安装这个库所在包咯,可是我们怎么这知道 libz.so.1在哪个包呢?
我们使用命令: apt-file search 来查找,首先安装,按如下命令:
1 | sudo apt-get install apt- file |
安装完以后系统会提示你update,如果没有提示,在终端输入如下命令:
1 | sudo apt- file update |
apt-file 是用来查找某个命令或者某一个库所在的包的,具体用法如下:
使用apt-file search 查找你的库所在包就行了,右边的是匹配你的库,左边的是你查的库所在的包,所以最后安装对应的包就行了。
1 | sudo apt-get install lib32z1 |
如果只为解决问题,只需上面这一条命令就ok了!