(Ubuntu 18.04) Android framework R版本S版本环境配置及使用 ninja 快速编译

狄晟睿
2023-12-01

Android R 和S版本的编译,首先是环境配置,配置好环境之后,需要的不仅仅是push framework.jar 这么简单,需要push的还有其生成的附属文件。如果是make framework 后面只能编译一个寂寞,需要 make framework-minus-apex services,才能生成对应的jar包。

1.环境配置(Ubuntu 18.04)

安装openjdk8-jdk

sudo apt-get install openjdk-8-jdk

安装fastboot

sudo apt-get install android-tools-fastboot

安装依赖库

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
sudo apt-get install libssl-dev

如果安装libesd0-dev报错 按照如下安装方式安装。 

​​​​​​​​​​​​​​Ubuntu18.04 安装libesd0-dev

2.编译Framework

进入源码根目录

1.source build/envsetup.sh 

2.lunch xxxx-userdebug

3.make  framework-minus-apex services  -j16

4.cp prebuilts/build-tools/linux-x86/bin/ninja out/host/linux-x86/bin/

如碰到无 out/host/linux-x86/bin/ 目录 可直接mkdir out/host/linux-x86/bin/

再执行上面的命令。

5.cp prebuilts/build-tools/linux-x86/lib64/* out/host/linux-x86/lib64/

如碰到无 out/host/linux-x86/lib64/ 目录 可直接mkdir out/host/linux-x86/lib64/

再执行上面的命令。

6.ln -sf out/combined-xxx.ninja build.ninja

7.编译之后可以用 ninja 命令实行快速编译

8.ninja framework-res -j16 (编译 framework-res.apk非必须选项)

比如 ninja  framework-minus-apex services  -j16 

执行完成上面的步骤,需要把如下文件对应的文件push到手机对应的版本里面,方便的模式是将下面的脚本保存为一个脚本直接执行比较方便。

3.push文件

ninja framework-minus-apex services   -j16
adb root
adb remount
#如果当前操作是在源码根目录下操作,该路径不用改动,否则要根据自己的实际路径修改
# xxx代表自己编译的版本
OUT=out/target/product/xxxx

adb push $OUT/system/framework/boot-framework.vdex /system/framework/

adb push $OUT/system/framework/arm/boot-framework.art /system/framework/arm
adb push $OUT/system/framework/arm/boot-framework.oat /system/framework/arm
adb push $OUT/system/framework/arm64/boot-framework.vdex /system/framework/arm64/

adb push $OUT/system/framework/arm64/boot-framework.art /system/framework/arm64
adb push $OUT/system/framework/arm64/boot-framework.oat /system/framework/arm64
adb push $OUT/system/framework/arm/boot-framework.vdex /system/framework/arm/

adb push $OUT/system/framework/services.jar system/framework/
adb push $OUT/system/framework/framework.jar system/framework/
adb push $OUT/system/framework/framework-res.apk system/framework/


adb reboot

 类似资料: