當前位置:首頁 » 編程軟體 » aosp多目標編譯

aosp多目標編譯

發布時間: 2023-05-20 06:45:54

① 自己可以編譯安卓源碼

用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:

sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」

其中[email protected]為你自己的郵箱.

簡要說明

android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.

源碼下載

由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)

repo工具下載及安裝

通過執行以下命令實現repo工具的下載和安裝

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:

我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:


這里寫圖片描述

執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.

錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.

    結束吧

    到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.

    ② 解決ubuntu編譯aosp報錯問題:error while loading shared libraries: libncurses.so.5

    報錯如下:

    解決方案:安裝libncurses5解決,命令如下

    ③ Android Studio 3.5導入AOSP編譯的classes.jar

    一、適用場景

        我們在寫應用時可能會需要調用系統隱藏的API,這些API是我們無法直接訪問的,報如下錯誤:

     此時,我們需要將系統AOSP的out/target/common/obj/java_LIBRARIES/framework_intermediates/classes.jar導入到Android Studio中,使app能夠訪問這些介面。

    二、實現步驟

    Step1 . 在app目錄下建立libs文件夾,並將classes.jar包放入該路徑

    Step2 .在app目錄上右鍵【Open Mole Settings】,點擊左側【Dependencies】,選擇app,點擊【+】選擇【2 Jar Dependency】,添加

    選擇我們的libs/classes.jar,點擊【OK】

    Step3 .在Mole的build.gradle中,dependencies自動增加依賴配置,注釋掉下面一行

    implementation fileTree(dir: 'libs', include: ['*.jar'])  

    並將implementation files('libs/classes.jar')改為

    compileOnly files('libs/classes.jar')

    最終如下圖所示

    Step4 .修改Project的build.gradle,在allProjects中增加如下語句

        gradle.projectsEvaluated {

            tasks.withType(JavaCompile) {

                options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\classes.jar')

            }

        }

    Step5 .修改jar包優先順序,在Moels的app.iml文件中找到我們的classes.jar包所在行,

    <orderEntry type="library" name="Gradle: __local_aars__:/Users/mrwong/AndroidStudioProjects/uart_daemon/app/libs/classes.jar:unspecified@jar" level="project" />

    將其移動到

    <orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />

    這一行之上,最終如下圖所示:

    至此,app可以優先訪問我們自己的jar包 。

    ④ ubuntu/mac android aosp源碼編譯遇到的坑

    以上是編譯aosp問題總結
    ========================分割線==========================

    直接在命令行中設置臨時變數就行

    以上是刷機問題總結
    ========================分割線==========================

    ⑤ 編譯aosp為什麼要安裝gcc

    如果你的源程序是 C 語言的話,而你又是在 LINUX 系統下開發程序,那你就必須使用 gcc 編譯器;如果你是在 UNIX 系統下開發 C 語言源程序,那麼就要使用 cc 編譯器。所以說,最關鍵的還是要看你的軟體開發平台。

    ⑥ 怎麼在ubuntu上編譯android源碼

    步驟一:
    安裝Ubuntu系統。我們既可以通過虛擬機的方式安裝Ubuntu,也可以直接在電腦上安裝,為了獲得更好的Linux操作體驗,我建議直接在電腦上面安裝Ubuntu,我在自己電腦上安裝了win10和Ubunut Server14.04雙系統,使用的時候可以根據自己的需要隨時切換系統,非常方便。關於如何搭建雙系統,網上有很多教程,我就不在此敘述了,但是我想說明的一點是在安裝Ununtu的時候,分配給Ubuntu的磁碟空間一定要盡可能大一點,至少60G,我分配了105G,編譯完成之後還剩下50多G,也就是說差不多用了近50G的空間,所以安裝Ubuntu的時候一定得分配大一點的磁碟空間,不然編譯會因為空間不足而中斷。
    步驟二:
    搭建好Ubuntu系統之後,我們需要下載一份Android6.0的源碼,網上很多文章都介紹了如何通過repo的方式來下載源碼,但是通過這種方式下載速度可能並不是很理想,直接下載網路雲的Android6.0源碼,
    因為Android6.0的源碼所佔空間非常大,所以上傳者把Android源碼分成了很多個文件,待全部下載完畢之後,我們可以通過命令把這些分開的文件合並為一個文件。
    步驟三:
    如果我們是在Windows上下載的源碼,那麼當我們打開Ubuntu之後,要做的第一件事請就是把Windows中的Android源碼拷貝到Ubuntu系統下面,我直接利用復制粘貼的方式將源碼拷貝到了Ubuntu的Home目錄下面,拷貝之後的目錄結構Home/android6_r1/各個分開的源碼文件。
    步驟四:
    合並這些被分開的源碼文件。我們按下鍵盤上的ctrl + alt + T打開控制台,通過cd命令進入到Home/android6_r1/目錄下面,然後執行命令:cat Android6_r1_* > M.tgz,不用多久,在Home/android6_r1/目錄下面就會生成一個新的文件——M.tgz,M.tgz就是合並之後的壓縮文件。
    步驟五:
    解壓步驟四生成的壓縮文件。同樣是在Home/android6_r1/目錄下面,我們在控制台執行命令:tar zxvf M.tgz,開始解壓。解壓的過程大概需要20分鍾左右的時間,請耐心等待。解壓好了之後,在Home/android6_r1/會生成一個mydroid的文件夾,這個文件夾就是Android源碼的根文件夾了,裡面有abi、devices、hardware、packages、sdk、art等文件夾和文件。
    步驟六:
    安裝編譯源碼所需要的軟體。在控制台中我們通過cd..命令退回到Unbuntu用戶的根目錄下,然後依次執行以下命令:
    sudo apt-get update
    sudo apt-get install openjdk-7-jdk
    sudo update-alternatives --config java
    sudo update-alternatives --config javac
    以上命令每一條都必須分開單獨執行,目的是為了獲取1.7版本的jdk並設置環境變數。當我們安裝完Ubuntu之後可能會自帶一個jdk,但是如果用自帶的jdk編譯Android源碼很可能會提示jdk版本不符合要求的錯誤,因此我們需要重新下載1.7版本的jdk,我用openjdk-7-jdk編譯未出現任何問題。
    接下來繼續執行以下命令,同樣每一行都是分開單獨執行的:
    sudo apt-get install git gnupg flex bison gperf build-essential
    sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev
    sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386
    sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos
    sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386
    sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
    以上命令主要是安裝編譯源碼時需要用到的各種軟體,如果沒有安裝這些軟體,編譯的過程中會提示缺少必要的軟體而無法繼續編譯,因此,在正式編譯源碼之前,一定要先安裝這些軟體。
    步驟七:
    開始編譯。在控制台中通過cd命令進入到Home/android6_r1/mydroid/目錄下,然後執行命令:source build/envsetup.sh,導入編譯Android源碼所需的環境變數和其它參數。
    步驟八:
    在控制台中執行命令:lunch,運行命令之後會提示我們選擇編譯目標。這里我選擇的的默認目標,即aosp_arm_eng。
    步驟九:
    在控制台中執行命令:make -j8,開始編譯。注意,make -j8命令中的數字8和我們電腦的CPU核心數以及線程數有關系,一般這個數字的數值最大不能超過CPU線程數的2倍,例如我電腦的處理器是i5 6200U,為雙核四線程,因此編譯Android源碼的時候,我可以設置的最大工作線程數量為4 * 2 = 8。在執行make命令的時候我們應該根據自己的CPU參數設置合理的工作線程數值。
    以上步驟執行完之後,就是一段非常漫長的等待了,我從中午十二點多開始編譯,一直到晚上九點多編譯完成,整個編譯過程耗時九個多小時,幸好我的運氣還不錯,編譯過程中沒有出現任何錯誤,只是中途意外中斷了一次,但是Android源碼是可以接著上次中斷的位置繼續編譯的,已經編譯的部分不會重復編譯,因此並未對我造成大的影響。同志們,我想說的是,編譯的過程中一定要有耐心喲!
    整個源碼編譯完成之後,如果提示如下信息,那麼Congratulations, you are successful!!!

    ⑦ CnetOS編譯AOSP不明原因失敗

    ROOT獲得最高許可權是刪除這些應用的唯一途徑 實際手動操作的流程非常復雜,並且有版本限制 我推薦你款不錯的手機ROOT工具吧, 我一直都是在用的,很不錯 使用應用寶獲取手機root許可權在工具 選項里找到一鍵ROOT即可或者KINGROOT也行。

    ⑧ aosp系統怎麼樣

    AOSP 全名為 Android Open-Source Project,中文為安卓開源項目,開源即開放源代碼!Android 是一個基於 Linux 的、由 Google 主導的開源系統。嚴格意義上來說,Android=AOSP+GMS,那麼這個GMS又是什麼呢?GMS 全名為 Google Mobile Service,即谷歌移動服務,也就是我們常刷的谷歌服務包。由於你懂的原因,國內無法使用 GMS,所以國內的各種定製 ROM 都是 AOSP 的定製修改加上自家的雲服務,比如 MIUI、ColorOS 等!所以,所有的 ROM 最終的根源就是 AOSP,沒有AOSP,也就沒有現在的 Androi關於 CM,全名為 CyanogenMod,全球最大的第三方 ROM 編譯團隊。CM 是基於 AOSP 進行二次開發,在 AOSP 的基礎上添加功能、適配更多機型、編寫眾多機型的內核和驅動!CM 是在底層多 AOSP 進行改進,並且遵循 Android 設計規范,所以 UI 與交互方面,與 AOSP 保持一致,所以很多人說的CM的UI應該

    ⑨ Android AOSP代碼與編譯伺服器系統時間有關系嗎

    起因:aosp由許多項目組成,android4.2就有329個project,每個項目都是一個獨立的git倉庫。
    Repo:創建一個aosp分支來做feature開發就需要每一個子項目創建對應的分支,手動創建很費力,所以有了Repo,自動化處理。Repoz自動化體現在創建分支,查看分支狀態,提交代碼,更新代碼。
    Repo實際由Python腳本組成,Python腳本通過調用Git完成自己的功能。組成Repo工具的Python腳本本身也是一個Git倉庫。這個Git倉庫在aosp裡面,焦作Repo倉庫。每次執行Repo命令的時候了,Repo就進行一次更新。
    Manifest倉庫:Repo是用來自動化處理aosp子項目的倉庫的,子項目名稱,倉庫地址,aosp又是不斷迭代變化的,每個版本子項目都不一樣,就需要另外一個倉庫來管理aosp所有子項目的倉庫元信息。就是Manifest倉庫
    Repo腳本:

    ⑩ 如何在 ubuntu 下編譯 aosp生成 mac 和 win 環境可執行的 aapt 工具

    如果你用的是 Ubuntu 或其他 Debian 衍生的發行版,可以使用 apt-get命令。比如:$ sudo apt-get install 軟體包名稱
    然後輸入密碼,如果軟體包的名稱正確,軟體安裝進程就會被啟動。
    apt-get 還可以刪除軟體,只要把上面的 install 換成 remove 就行了。

    熱點內容
    64位access資料庫 發布:2025-07-17 05:35:58 瀏覽:374
    php文件的相對路徑 發布:2025-07-17 05:34:22 瀏覽:711
    矢量的叉乘運演算法則 發布:2025-07-17 05:29:41 瀏覽:661
    dell雲存儲伺服器 發布:2025-07-17 05:21:06 瀏覽:255
    銑床怎麼編程 發布:2025-07-17 05:20:29 瀏覽:776
    sql11oracle 發布:2025-07-17 05:15:39 瀏覽:744
    全國各地移動dns伺服器ip地址 發布:2025-07-17 05:07:47 瀏覽:312
    sdvn加密 發布:2025-07-17 05:01:36 瀏覽:739
    怎麼提取電腦緩存中的音樂 發布:2025-07-17 04:53:14 瀏覽:27
    網路主根伺服器是什麼 發布:2025-07-17 04:44:31 瀏覽:350