日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

自己动手编译Android(LineageOS)源码

發布時間:2023/12/31 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 自己动手编译Android(LineageOS)源码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、編譯LineageOS源碼

準備

設備:小米 MIX2
設備代號:chiron
Android版本:9.0
PC配置:

系統:Ubuntu18.04
至少12G RAM
至少200GB 剩余硬盤空間
良好的網絡環境

1.下載并解壓SDK

sdk中包含fastboot和adb

下載

wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip

解壓

unzip platform-tools-latest-linux.zip -d ~

添加到環境變量

gedit ~/.profile

輸入:

# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
    PATH="$HOME/platform-tools:$PATH"
fi

保存。

使改動生效:

source ~/.profile

2.安裝依賴

安裝必要庫和工具

sudo apt-get install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

安裝openjdk-8-jdk

sudo apt install -y openjdk-8-jdk

3.配置源

創建repo存放目錄

mkdir -p ~/bin

創建源碼存放目錄

mkdir -p ~/android/lineage

× 注:請確保該目錄所在的磁盤有足夠的空間(至少200G)

安裝repo

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

chmod a+x ~/bin/repo

~/bin放入環境變量

gedit ~/.profile

加入:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

使改動生效:
source ~/.profile

初始化repo

cd ~/android/lineage

repo init -u https://github.com/LineageOS/android.git -b lineage-16.0

× 注:這里的lineage-16.0是分支名,對應Android 9.0。更多分支請瀏覽:https://github.com/LineageOS/android

4.拉取源碼

repo sync

5.配置源碼

cd device/xiaomi

git clone https://github.com/LineageOS/android_device_xiaomi_chiron -b lineage-16.0 chiron

提取vendor信息

提取手機廠商的庫。這一步將手機連接電腦,并保證手機能被adb
命令操控,還需要手機授予adb root權限。

adb shell su -c setenforce 0

cd chiron

./extract-files.sh

提取需要點時間,需耐心等待

拉取kernel

cd kernel/qcom

git clone https://github.com/LineageOS/android_kernel_qcom_msm8998 -b lineage-16.0 msm8998

配置構建環境

source build/envsetup.sh

配置設備信息

breakfast chiron

6.配置構建工具

配置ccache

gedit ~/.bashrc

加入:

export USE_CCACHE=1

使改動生效:

source ~/.bashrc

執行:

ccache -M 50G

來設置緩存大小

× 注:ccache默認在home目錄,請確保home目錄有足夠的空間。如果想自定義ccache的目錄,可以在~/.bashrc文件里加入export CCACHE_DIR=/path/to/.ccache。緩存大小根據自己硬盤大小設置,設置25G以上可以顯著提高源碼的構建速度。

配置jack

gedit ~/.bashrc

加入:

export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx8G"

使改動生效:

source ~/.bashrc

7. 構建

構建整個源碼

croot

brunch chiron

× 注:構建成功后,在源碼目錄執行cd $OUT進入編譯好的ROM的存放目錄。lineage-16.0-xxxxxxxx-UNOFFICIAL-chiron.zip為編譯好的刷機包。

只構建某個模塊

mmm <模塊名>

例如構建frameworks中的base

mmm frameworks/base

打包成system.img

有時候我們只修改system里的模塊,沒必要編譯整個源碼,就只打包system.img

make snod

編譯system

make systemimage

8.刷入手機(可選)

下載twrp

https://dl.twrp.me/chiron/

刷入trwp

刷入recovery前,要先解鎖手機的bootloader,如何解鎖,各個廠商不太一樣,這里就不闡述了。

adb reboot bootloader

fastboot flash recovery twrp.img

fastboot reboot

刷入system.img

我們調試源碼時,如果不想刷入整個ROM,可以只刷入system.img。以下命令將system.img刷入system分區

fastboot flash system system.img

刷入ROM

將編譯好的刷機包,通過adb push命令將刷機包傳輸到手機存儲。進入twrp界面,擦除system分區,data分區。選擇手機存儲中的刷機包,刷入!!!

9.常見問題

(1) 編譯目標設備為emulatorx86時在編譯時出錯,提示yasm找不到。

安裝yasm

sudo apt-get install yasm

(2) adb命令提示沒有權限

lsusb

找到類似一行:

Bus 001 Device 005: ID 18d1:4ee7 Google Inc.

編輯51-android.rules:

sudo gedit /etc/udev/rules.d/51-android.rules

輸入類似的內容:

# MIX2 normal
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee7",MODE="0666",GROUP="plugdev"
# MIX2 fastboot
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="d00d",MODE="0666",GROUP="plugdev"

×注:idVendor,idProduct分別為lsusb命令顯示的ID。開機狀態和fastboot模式都需要添加權限,所以,需要增加兩行。

更改文件權限:

sudo chmod a+r /etc/udev/rules.d/51-android.rules

二、模擬器使用LineageOS

將emulator所在的目錄加入環境變量

在源碼目錄,cd $OUT

設置模擬器路徑

# 設置模擬器目錄
if [ -d "/android_source_path/prebuilts/android-emulator/linux-x86_64" ] ; then
    PATH="/android_source_path/prebuilts/android-emulator/linux-x86_64:$PATH"
fi

設置OUT目錄

export ANDROID_PRODUCT_OUT=/android_source_path/out/target/product/emulatorx86

使用編譯好的鏡像啟動(arm):

emulator64-arm -kernel ./prebuilts/qemu-kernel/arm64/kernel-qemu -sysdir $ANDROID_PRODUCT_OUT -system $ANDROID_PRODUCT_OUT/system.img -data $ANDROID_PRODUCT_OUT/userdata.img -ramdisk $ANDROID_PRODUCT_OUT/ramdisk.img

使用編譯好的鏡像啟動(x86):

emulator64-x86 -kernel ./prebuilts/qemu-kernel/x86/kernel-qemu -sysdir $ANDROID_PRODUCT_OUT -system $ANDROID_PRODUCT_OUT/system.img -data $ANDROID_PRODUCT_OUT/userdata.img -ramdisk $ANDROID_PRODUCT_OUT/ramdisk.img

參考

https://wiki.lineageos.org/devices/chiron/build
https://www.htcp.net/741.html
https://www.isthnew.com/archives/build-lineageos.html
http://blog.csdn.net/luoshengyang/article/details/6566662/

總結

以上是生活随笔為你收集整理的自己动手编译Android(LineageOS)源码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。