Mokee android 10.0代碼下載編譯總結


做android framework開發也有很多年了,一直都是在公司裏面下載編譯,最近因爲自己有個小需求想要實現,因此想着自己下載一個aosp的代碼來修改實現,一番查詢之後,瞭解到mokee這個項目,因此決定自己動手,製作rom定製需求,下面是我在整個源碼下載,編譯的一個流程,以及遇到的問題總結,如果哪位同仁有相關的需求需要實現,希望如下經驗可以幫到你

mokee下載

mokee的代碼開源託管在github上,其他aosp的代碼,我們需要從google下載,由於某些衆所周知的原因,我們並不能鏈接到google服務器上,因此在查閱一番之後,決定使用國內鏡像。首先我們需要準備如下資料:

  1. VPN:部分資源由於種種原因,下載速度很慢,這裏使用VPN之後,能夠提高下載速度
  2. aosp下載鏈接的國內代理,這裏在mokee的論壇裏面有好幾種,我用的是清華源

https://mirrors.tuna.tsinghua.edu.cn/git/AOSP

  1. repo工具下載鏈接: 這裏用的是mokee論壇提供的下載鏈接

https://raw.githubusercontent.com/MoKee/git-repo/stable/repo

  1. 硬件配置:因爲我編譯的是Android 10.0,可能需要的配置比較高,所以我把我的臺式機直接重裝了ubuntu 18.04, 配置如下:

系統:ubuntu 18.04
硬盤:120G 固態硬盤 + 1TB 機械硬盤
swap分區:配置20G
內存:8G

  1. SSR工具:不可描述的工具

https://github.com/qingshuisiyuan/electron-ssr-backup/releases

以上工具準備OK之後,開始下載代碼,首先開啓SSR,按照官網的步驟,下載mokee repo工具

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://raw.githubusercontent.com/MoKee/git-repo/stable/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

執行完成之後,vim ~/bin/repo看下repo下載成功沒有,一般的repo是一個python腳本,如果裏面的內容是一些網頁內容,那就表明遭到了404或者403了,原因可能是網絡問題,也有可能是github.com的ip在ubuntu上可訪問,如果是網絡問題,請重新執行curl命令,再確認;如果是被禁的問題,按照如下步驟,首先前往以下站點查詢github幾個url的ip地址:https://www.ipaddress.com/search/ 接着按照如下步驟:

vi /etc/hosts
文件末尾加入:
199.232.68.133 raw.githubusercontent.com
140.82.113.4 github.com
199.232.69.193 github.global.ssl.fastly.net
然後 :eq 保存

執行完成之後,再重新執行上述curl命令,重新下載repo即可。

確保repo腳本工具下載OK之後,接下來初始化工程,在自己的工程目錄,執行如下命令

repo init -u https://github.com/MoKee/android -b mkq-mr1

這一步還是比較容易成功,執行完成之後,工程目錄下存在一個隱藏目錄.repo, 因爲我們用的是aosp源,按照mokee的提示,repo selfupdate我這裏沒有執行成功,所以我就選擇手動修改了

vi .repo/manifests/default.xml
修改
在這裏插入圖片描述

在這裏插入圖片描述
修改完成之後,開始同步:

repo sync --force-sync --no-clone-bundle

之後就是漫長的等待了,一般清華源的下載速度還可以,如果同步失敗,一般根目錄下會有個android的文件夾了,將裏面的default.xml的fetch也改爲清華源,然後就是不斷的sync,直到成功repo完成爲止。

mokee編譯

下載完成之後,準備開始編譯,首先要去官網找到對應的項目設備id, 下載官網,比如紅米7A,對應的設備id是pine,那我們開始編譯pine設備的rom, 先安裝編譯依賴

sudo apt-get install openjdk-8-jdk
sudo apt-get install sudo apt-get install gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g+±multilib tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev

命令流程如下:
配置編譯環境變量

. build/envsetup.sh

加載紅米配置文件, 這裏會去下載紅米7A的device配置以及kernel,以及一些vendor配置。可能會比較慢,主要是vendor目錄,device目錄,kernel目錄,如果下載失敗了,大家可以參考網上gitlab引用github項目,再從gitlab目錄下載,速度會很快,而且不會失敗。

lunch mokee_pine-userdebug

開始編譯

mka bacon -j1 > build.log

過程問題

問題1. 內存不足,導致ninjia被killed, 表現就是沒有任何LOG,只有一行killed,然後編譯停止。
解決:因爲我的機器內存只有8G,android 10.0編譯指導硬件配置爲16G,所以我通過加大swap分區解決此問題,swap分區大小爲16G.

問題2. 編譯過程中,報java heap outofmemory.
解決:java堆內存不足,android 10.0中沒有用jack編譯了,改用了soong, 在項目根目錄用如下命令配置java,編譯過程中,會自動去pick up該值

export _JAVA_OPTIONS="-Xmx4g"

問題3. lunch過程中,出現各種的git問題
解決:查了一堆資料基本都是copy paste, 沒辦法,最終去.repo下面回到對應的git庫,找到其中的url, 將github工程引導到gitlab,再用git clone單獨下載下來。

歡迎各位同行加wx交流:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章