Android内核可帮助应用程序与设备的硬件组件进行通信。
例如:
- 我们大多数人都熟悉游戏模式。它的作用是指示处理器和图形处理单元以其最大频率运行。
- 另一个例子是省电模式。它指示处理器和图形处理单元以其最小频率运行。
需要编译我们自己的内核:编译我们自己的内核可能非常有用,因为:
- 使用我们自己的内核,可以根据需要进一步优化用户体验
- 它还可以帮助开源开发。
编译我们自己的内核的步骤:
- 先决条件:以下是编译我们自己的Android内核所需的先决条件:
- Ubuntu或任何其他基于Linux的操作系统
- 熟悉基本的Linux命令
- 熟悉Github
- 设备源代码
注意:本文适用于具有64位Snapdragon SOC的设备
- 安装依赖项打开终端并粘贴以下内容:
sudo apt-get install git ccache automake flex lzop bison \ gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 \ g++-multilib python-networkx libxml2-utils bzip2 libbz2-dev \ libbz2-1.0 libghc-bzlib-dev squashfs-tools pngcrush \ schedtool dpkg-dev liblz4-tool make optipng maven libssl-dev \ pwgen libswitch-perl policycoreutils minicom libxml-sax-base-perl \ libxml-simple-perl bc libc6-dev-i386 lib32ncurses5-dev \ x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev xsltproc unzip
- 下载所需文件:
- 在本地磁盘上克隆设备源:
mkdir mykernel git clone {link to your device kernel source}
- 下载兼容的GCC工具链。在本文中,使用了AOSP的GCC。
cd mykernel git clone https://android.googlesource.com/platform/ prebuilts/gcc/linux-x86/aarch64/ aarch64-linux-android-4.9 toolchain
- 下载兼容的CLANG工具链。在本文中,将使用AOSP的CLANG。
- 将下载的文件移到mykernel文件夹中,然后使用以下命令解压缩:
tar vxzf linux-x86-android-9.0.0_r48-clang-4691093.tar.gz
- 在本地磁盘上克隆设备源:
- 编译内核:
cd mykernel rm -rf out mkdir out export ARCH=arm64 export SUBARCH=arm64 export DTC_EXT=dtc make O=out ARCH=arm64 {device defconfig} PATH="${PWD}/bin:${PWD}/toolchain/bin:${PATH}" \ make -j$(nproc --all) O=out \ ARCH=arm64 \ CC=clang \ CLANG_TRIPLE=aarch64-linux-gnu- \ CROSS_COMPILE=aarch64-linux-android- | tee kernel.log
在这里,将{device defconfig}替换为配置文件的名称。您可以在/ arch / arm64 / configs文件夹中找到它。
- 引导编译的内核:
- 浏览到/ out / arch / arm64 / boot并找到Image-dtb文件(编译的zImage)并复制该文件。
- 下载Android Image Kitchen并反编译您的启动映像。反编译后,您会在反编译的文件夹中找到原始的zImage。将其替换为先前复制的映像,然后重新编译启动映像。
- 使用以下命令通过fastboot刷新:
fastboot flash boot mykernel.img
- 处理遇到的错误: mykernel文件夹中将生成一个kernel.log文件。找到显示错误的行并搜索解决方案。另外,在论坛上发帖寻求帮助时,请不要忘记附加日志文件。
这将是基本内核,一旦成功启动,便可以添加更多功能。