AOSP 在Archlinux 下编译记录
使用Android的好处是可以自由的折腾和开放性的操作系统,本文记录下AOSP在archlinux下的编译环境搭建和错误处理过程.
安装依赖,如果没有开启multilib 支持
需要如下包
1
lib32-gcc-libs git gnupg flex bison gperf sdl wxgtk2 squashfs-tools curl ncurses zlib schedtool perl-switch zip unzip libxslt python2-virtualenv bc rsync ncurses5-compat-libs(AUR) lib32-zlib lib32-ncurses lib32-readline lib32-ncurses5-compat-libs(AUR)
AOSP可以直接安装AUR仓库的 aosp-devel
1
yaourt -S aosp-devel
编译lineageOS 可以直接安装AUR仓库的 lineageos-devel
1
yaourt -S lineageos-devel
配置java环境
可以直接安装jdk8-openjdk 或者下载oracle官方jdk
1
sudo pacman -S jdk8-openjdk
贴下ORACLE JDK的环境变量的配置
1
2
3
4
5#set java environment
JAVA_HOME=/home/juve/Android/jdk1.8.0_152
export JRE_HOME=/home/juve/jdk1.8.0_152/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
编译
同步AOSP的源码
这里记录下使用清华大学的镜像来同步源码,就可以不用FQ了,比较方便
下载 repo 工具:
1
2
3curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod a+x repo
sudo mv repo /usr/bin/repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc里
1
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
同步源码并切换分支
1
2repo init -u https://aosp.tuna.tsinghua.edu.cn/mirror/manifest -b master
repo syncAOSP的编译需要Python2.x archlinux下可以直接安装 python2-virtualenv 来初始化源码的工作环境
1
sudo pacman -S python2-virtualenv
安装完后执行
1
2virtualenv2 venv
source venv/bin/activate初始化设备信息
1
2
3
4source build/envsetup.sh
lunch (选择要编译的设备)
make -j$( nproc --all )
emulator (模拟器)
记录下添加新设备
- 新设备需要 device,kernel,vendor源码,自己会写的大牛就别看了,我这里使用github上已有的
- 这里使用local_manifests 来同步github上要使用的代码 (remote 如果在项目的manifests里定义过这里其实可以省略,当然写上也没关系)
在.repo/local_manifests/ 目录下添加这个xml文件
1
2
3
4
5
6
7
8
9
10
11
12
<manifest>
<!-- Github remote -->
<remote name="github"
fetch="https://github.com/" />
<project name="LineageOS/android_device_xiaomi_polaris" path="device/xiaomi/polaris" remote="github" revision="lineage-16.0"/>
<project name="LineageOS/android_kernel_xiaomi_sdm845" path="kernel/xiaomi/polaris" remote="github" revision="lineage-16.0"/>
<project name="LineageOS/android_device_xiaomi_sdm845-common" path="device/xiaomi/sdm845-common" remote="github" revision="lineage-16.0"/>
<project name="LineageOS/android_kernel_xiaomi_sdm845" path="kernel/xiaomi/sdm845" remote="github" revision="lineage-16.0"/>
<project name="LineageOS/android_packages_resources_devicesettings" path="packages/resources/devicesettings" remote="github" revision="lineage-16.0"/>
<project name="palaych/proprietary_vendor_xiaomi_polaris" path="vendor/xiaomi/polaris" remote="github" revision="pie"/>
</manifest>添加完毕后 执行repo sync 就可以了
添加机型设备到lunch列表(在device所在目录下新建vendorsetup.sh,添加内容:)
1
add_lunch_combo xxx (这里名字和device里的设置关联,lunch的时候会自动发现)
同步完成后开始初始化设备信息并编译
1
2
3
4source build/envsetup.sh
lunch (选择要编译的设备)
make -j$( nproc --all )
emulator (模拟器)好久没写blog了,差点忘了怎么写,lunch和make 在实际中还有很多错误,自行Google了