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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

aosp 为什么某些目录没有编译_编译Android AOSP代码

發布時間:2024/4/13 Android 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 aosp 为什么某些目录没有编译_编译Android AOSP代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下載完了源代碼,終于到了編譯的階段了。這個階段遠比你想象的簡單,一個make命令就可以完成源代碼的編譯了.參照下面的教程你就可以編譯出適用于Android源代碼樹上的所有分支,包括master.基本的編譯流程如下:

準備編譯環境

用envsetup.sh(它在源代碼根目錄/build下面)腳本初始化環境,注意后面的lunch命令等都跟這一步有沒有執行有關。如果沒有執行后面會提示找不到lunch命令.注意將source替換成.省得打那么多字,并且這種簡短的方式更常見于文檔中。我們需要進到源代碼的根目錄下,運行下面其中一個命令。

$ source build/envsetup.sh

或者

$ . build/envsetup.sh

選擇編譯目標

用lunch命令選擇編譯目標.額外的配置可以用參數傳遞。比如下面的命令:

$ lunch aosp_arm-eng

它指的是一個適用于模擬器的完整編譯版本,帶編譯的版本。

如果運行lunch的時候沒有帶任何參數,他就會彈出一個選擇菜單.

Lunch menu... pick a combo:

1. aosp_arm-eng

2. aosp_arm64-eng

3. aosp_mips-eng

4. aosp_mips64-eng

5. aosp_x86-eng

6. 省略一些選項...

17. aosp_angler-userdebug

所有的編譯目標的格式都是:BUILD-BUILDTYPE,BUILD指的是指定特性的結合,

BUILDTYPE是下面列出的其中一個:

Buildtype

用途

user

有限的權限;適合一般用戶

userdebug

類似user模式,但有root權限和debug能力,適合debug

eng

帶有額外的debug工具的開發配置。

如果你只是想編譯出一個可以運行的版本看看效果,那么可以直接運行lunch aosp_arm-eng,比如我有一個Nexus 6p的真機,我就可以運行 lunch aosp_angler-userdebug.

注意:執行lunch命令的時候,彈出Can not find SDK 10.6錯誤,具體的解決方法見Android編譯過程中的碎碎念.

更多關于編譯和真機運行的內容,看 Running Builds.

編譯代碼

用make編譯所有東西.GNU make 可以使用-jN參數并行地處理,并且他一般用CPU線程數的1~2倍進行編譯.比如在一個dual-E5520機器上(2 CPU,每個CPU 4核,每個核2線程),那么想讓編譯速度最大化就可以用make -j16或者make -j32.

$ make -j4

等待編譯完成后,會產生一些txt、img文件,android-info.txt、cache.imgramdisk-recovery.img、recovery.img、userdata.img

boot.img、ramdisk.img 、system.img。這些文件跟后面燒錄的過程有關,非常重要.一般他們在源代碼路徑下的out文件夾中。比如我之前輸入lunch aosp_angler-userdebug,那么就會生成在 “源代碼根目錄/out/debug/target/product/angler”,你也可以用源代碼根目錄下輸入 find . -name system.img查找.

![Uploading Snip20160214_7_020290.png . . .]

開始運行!

你可以直接在模擬器上運行或者將他燒錄到一個設備上。要注意之前已經用lunch選擇了特定的設備,不然他就很可能不能運行不同的編譯目標上。

運行模擬器

如果在選擇編譯目標那一步選擇的是lunch aosp_arm-eng.那么這時候就可以直接輸入emulator命令來運行模擬器了(emulator命令在編譯過程中會自動添加到Path路徑下)

$ emulator

刷機

如果在選擇編譯目標那步選擇了跟特定機型有關的編譯選項,比如Nexus 6P,那么就需要燒錄到設備上.

進入fastboot模式

為了燒錄到設備上,你需要使用fastboot,在成功編譯后他就會在path路徑下。把設備弄到fastboot模式下,要嘛手動按特定的組合鍵(對于Nexus系列可以參考這里),要嘛使用命令行如下:

$ adb reboot bootloader

解鎖bootloader

如果你的機器是第一次采用fastboot進行刷機,那么還需要運行下面的命令(要在fastboot模式下)進行bootloader解鎖.bootloader默認是鎖住的.bootloader只需要解鎖一次,解鎖后就不需要再解鎖了.

解鎖命令跟fastboot的版本有關,你可以運行fastboot不加參數,它會彈出明星提示,看看具體是哪個,按照我的經驗:

版本

命令

在Nexus 5x、Nexus 6p之前的機器上運行

fastboot oem unlock

Nexus 5x、Nexus 6p

fastboot flashing unlock

一旦設備進入fastboot模式, 先進入到產生的img文件目錄下(一般在源代碼根目錄下面,你可以搜索),運行

$ fastboot flashall -w

-w 選項清空設備上的/data分區,在第一次燒錄的時候很有必要,但其他時候就不是必須的.

你可能會好奇,一般不都使用rom文件(一個zip包)進行刷機嗎,這時候怎么就直接通過這個命令就行了?

是的,更具體的解釋可以見Android編譯過程中的碎碎念.

更多關于編譯和運行在真實設備上的東西,請查看running builds.

這時候所有的工作就完成了.

總結

以上是生活随笔為你收集整理的aosp 为什么某些目录没有编译_编译Android AOSP代码的全部內容,希望文章能夠幫你解決所遇到的問題。

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