<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      macOS 13.5 編譯Android11.0源碼并導(dǎo)入android studio 并且刷機(jī)

       

      1、準(zhǔn)備編譯環(huán)境

      1. 電腦配置和版本

      • macOS Ventura 版本 13.5
      • xcode-select version 2397
      • aosp分支:android-11.0.0_r1

      2. 安裝jdk、xcode、依賴庫(kù)

      具體參考官方文檔

      1. 安裝 jdk8u45 or newer
      2. 安裝xcode命令行
      3. 安裝編譯依賴庫(kù)
      xcode-select --install
      brew install gmake libsdl git gnupg

      3. 設(shè)置可以同時(shí)打開(kāi)的文件數(shù)限制,避免編譯時(shí)超出限制

      在 ~/.bash_profile 添加如下語(yǔ)句

      # set the number of open files to be 1024
      ulimit -S -n 1024

      4. 創(chuàng)建區(qū)分大小寫(xiě)的APFS宗卷

      官方文檔創(chuàng)建的是區(qū)分大小寫(xiě)HFS+磁盤(pán)鏡像,我們這邊使用區(qū)分大小寫(xiě)的APFS卷宗

       操作步驟:

      step1.打開(kāi)磁盤(pán)工具按下圖步驟操作:

       step2. 設(shè)置宗卷大小
      具體大小根據(jù)自己情況設(shè)定,配額大小最好不要小于200G

        

      2、下載aosp源碼

      1. Googleapi 下載

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

      chmod a+x ~/bin/repo

       

      repo init -u https://android.googlesource.com/platform/manifest -b android11-dev

      2. Tsinghua 源下載

      curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
      chmod a+x ~/bin/repo
      
      export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
      
      repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android11-dev

      或者
      curl https://gerrit-googlesource.lug.ustc.edu.cn/git-repo > ~/bin/repoh
      repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android11-dev --repo-url=https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
       
       

      3、編譯

      編譯命令

      source build/envsetup.sh
      lunch 47
      make -j128

       

      問(wèn)題1:Could not find a supported mac sdk(mac sdk 版本不匹配)

      錯(cuò)誤日志如下:

      解決方案1

      可以去 github 下載支持的SDK版本,然后解壓縮到以下目錄:

      /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs

       

      例如日志中支持的最新SDK版本是10.15,所以我下載了該版本并直接解壓縮到上面的目錄,然后繼續(xù)開(kāi)編:

       

      但是如果系統(tǒng)使用的是 Xcode (13.2.1或更高版本) 那么上面的操作之后,依舊不能解決錯(cuò)誤。原因是 Xcode 13.2.1 版本開(kāi)始,允許的最小 SDK 版本是 11.0。

      處理方案:

      雙擊下面的文件,默認(rèn)使用xcode打開(kāi)
      /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist

       修改成 10.15 即可解決此問(wèn)題。

       

       根據(jù)Google官方文檔,2021年6月22日之后的Android系統(tǒng)版本不支持在macOS系統(tǒng)上構(gòu)建,我們只能構(gòu)建之前的版本,或者之后發(fā)布的以前版本的補(bǔ)丁修復(fù)。目前測(cè)試最高只能編譯到Android 12.0,Android 12.1編譯不通過(guò)。

      注意:如果本機(jī)的MacOSX SDK的版本是11.\*和受支持的sdk版本已經(jīng)相差一個(gè)大版本了,建議最好不要直接按網(wǎng)上的方案一樣去在受支持的SDK列表中添加該版本,會(huì)導(dǎo)致很多意外的問(wèn)題,本人嘗試了幾次均以失敗告終。過(guò)程記錄在文末 其他 部分。 

       

      問(wèn)題2:too many open files(同時(shí)開(kāi)啟的文件太多)

      錯(cuò)誤日志如下:

       

      解決方案:在~/.bash_profile最后面添加以下內(nèi)容:

      ulimit -S -n 2048

       

      添加完后需執(zhí)行source命令使其立即生效:

       
      source ~/.bash_profile

       

      經(jīng)過(guò)近3個(gè)小時(shí)的等待,終于編譯成功 

       

      4、運(yùn)行模擬器刷機(jī)

      直接執(zhí)行emulator命令,剛編譯的系統(tǒng)就刷在模擬器中了:

       

      5、使用android studio閱讀源碼

      如無(wú)特殊說(shuō)明,以下命令執(zhí)行都在所下載源碼的根目錄下。

      1、生成工程信息文件

      依次執(zhí)行以下命令,生成IDE工程信息文件 android.iprandroid.iml

      source build/envsetup.sh
      mmma development/tools/idegen
      development/tools/idegen/idegen.sh

      2、修改android studio配置

      加大idea VM內(nèi)存:

      打開(kāi)IDEA 菜單欄 Help > Edit Custom VM Options,添加

      //  Help > Edit Custom VM Options
      -Xms1g 
      -Xmx5g

      修改文件大小限制,打開(kāi)區(qū)分大小寫(xiě)選項(xiàng)

      打開(kāi)IDEA 菜單欄 Help -> Edit custom properties, 添加

      idea.max.intellisense.filesize=100000
      idea.case.sensitive.fs=true

      NOTE: 重啟IDEA使配置生效。

      3、重啟

      重啟idea使配置生效,然后用idea打開(kāi)第一步中生成的 android.ipr 文件,由于工程很大,需要較長(zhǎng)的時(shí)間建立索引(我這臺(tái)機(jī)器花了將近2個(gè)小時(shí)),請(qǐng)耐心等待。

      4、創(chuàng)建JDK 1.8 (No Libraries)

      此時(shí)當(dāng)我們打開(kāi)文件的時(shí)候,IDE會(huì)有以下提示

      所以我們需要?jiǎng)?chuàng)建JDK 1.8 (No Libraries),點(diǎn)擊 Configure...,然后選擇Add JDK

      直接選擇jdk1.8.0_181.jdk/Contents/Homeopen之后JDK 1.8 (No Libraries)就創(chuàng)建好了

      然后我們需要在項(xiàng)目的SDK 配置中刪掉剛才創(chuàng)建的JDK 1.8 (No Libraries)中Classpath里面所有的jar,以保證跳轉(zhuǎn)到AOSP的源碼而不是系統(tǒng)安裝的JDK中:

       

      5、刪除Modules中的dependencies

      6、添加生成的資源文件ID目錄

       

      完成以上步驟然后同步一下,就可以愉快的在idea中閱讀Android源碼了,相比于使用sublime等純文本工具閱讀代碼,這種方式的優(yōu)勢(shì)在于在跟進(jìn)方法調(diào)用時(shí)很方便,可以直接control+鼠標(biāo)左鍵 進(jìn)行代碼跳轉(zhuǎn),而這種便捷的代價(jià)就是可能需要花上數(shù)天完成 環(huán)境配置 + 代碼下載 + 源碼整編。

      7、其他

      本節(jié)主要記錄編譯過(guò)程中的走彎路歷程。

      在遇到 Could not find a supported mac sdk問(wèn)題之后網(wǎng)上查閱資料,大部分建議為直接在受支持的mac sdk列表中添加當(dāng)前SDK版本過(guò)程如下:

      首先查看本機(jī)SDK版本:

      cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
      ls

       

      然后在/build/soong/cc/config/x86_darwin_host.go文件中添加該版本:

          darwinSupportedSdkVersions = []string{
              "10.10",
              "10.11",
              "10.12",
              "10.13",
              "10.14",
              "10.15",
              "11.1",
              "13.5",
          }  

       

      添加完后,緊接著遇到了下面的問(wèn)題:

      system/core/base/cmsg.cpp:36:21: error: use of undeclared identifier 'PAGE_SIZE'

      碰到了代碼的問(wèn)題,PAGE_SIZE這個(gè)變量未定義,詳細(xì)日志如下:

       

      解決方案

      satckoverflow 上有人碰到類似的問(wèn)題,看到下面有回復(fù)說(shuō)是配置mac os sdk版本的問(wèn)題,有點(diǎn)慌了,不過(guò)還是按照第二個(gè)方案改了一下:

      /system/core/base/include/android-base/cmsg.h中添加如下內(nèi)容:

      #ifndef PAGE_SIZE
      #define PAGE_SIZE (size_t)(sysconf(_SC_PAGESIZE))
      #endif

       

      在這個(gè)回答下面,答主還提到了后續(xù)會(huì)遇到的問(wèn)題,不過(guò)實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),不自己試試怎么知道呢,繼續(xù)編譯

      building。。。

      果然遇到了他說(shuō)的那個(gè)問(wèn)題,看樣子太新的Mac系統(tǒng)編Android系統(tǒng)代碼確實(shí)會(huì)有很多問(wèn)題

      passing argument to parameter 'bufsize' here

       

      解決方案

      按照上一個(gè)回答的解決思路嘗試:

      external/python/cpython2/Modules/getpath.c找到以下內(nèi)容:

      #ifdef __APPLE__
      #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
          uint32_t nsexeclength = MAXPATHLEN;
      #else
          unsigned long nsexeclength = MAXPATHLEN;
      #endif
      #endif

      然后將上面內(nèi)容修改為:

      #ifdef __APPLE__
          uint32_t nsexeclength = MAXPATHLEN;
      #endif

       

      經(jīng)過(guò)漫長(zhǎng)的等待后,發(fā)現(xiàn)這么修改并不能解決問(wèn)題,至此放棄修改受支持的SDK版本列表。

       

      6、刷機(jī)

      1. 刷機(jī)的配置

      export ANDROID_PRODUCT_OUT=~/android_13/out  

      2. 全刷命令

      adb reboot bootloader
      fastboot flashing unlock
      fastboot reboot fastboot
      fastboot flashall -w

      3. 單刷命令

      fastboot flash system system.img
      
      fastboot devices   //加載fastboot驅(qū)動(dòng)
      fastboot erase xxxx    //假如我要擦除RECOVERY 就是:fastboot erase recovery
      刷BOOT fastboot flash boot boot.img
      臨時(shí)刷 recovery:fastboot boot recovery.img
      請(qǐng)勿隨便刷這個(gè) fastboot flash hboot hboot.img
      
      fastboot flash system system.img
      fastboot flash userdata userdata.img
      fastboot flash recovery recovery.img
      
      fastboot flash radio radio.img
      fastboot reboot
      

        

       

      參考文檔

      1. stackoverflow
      2. 官方文檔
      3. Mac編譯Android源碼9.0
      4. stackoverflow
      5. Mac下編譯Android源碼,并導(dǎo)入IntelliJ IDEA進(jìn)行源碼閱讀
      6. 科大AOSP鏡像使用說(shuō)明
      posted @ 2023-08-09 11:38  狐貍已化妖  閱讀(2625)  評(píng)論(1)    收藏  舉報(bào)
      主站蜘蛛池模板: 奇米四色7777中文字幕| 久久久综合香蕉尹人综合网 | 亚洲码欧洲码一二三四五| 国产在线播放专区av| 日本亚洲一区二区精品| 国产精品尤物乱码一区二区| 乱子伦视频在线看| 日本一卡2卡3卡四卡精品网站| 无码人妻精品一区二| 欧美黑人巨大videos精品| 少妇人妻偷人精品系列| 国产中文字幕一区二区| 国色天香成人一区二区| 武汉市| 国产美女久久久亚洲综合| 久久精品国产午夜福利伦理| 亚洲天堂成人网在线观看| 成人免费A级毛片无码网站入口| 欧美亚洲综合久久偷偷人人| 性色a∨精品高清在线观看| 午夜福利日本一区二区无码| 免费AV片在线观看网址| 午夜福利在线观看6080| 国产精品99中文字幕| 人成午夜免费大片| 亚洲综合伊人五月天中文| 免费看成人aa片无码视频吃奶 | 国产明星精品无码AV换脸| 中文字幕av日韩有码| 蜜臀一区二区三区精品免费| 末发育娇小性色xxxxx视频| 国产69精品久久久久乱码免费| 久久天堂综合亚洲伊人HD妓女| 无码专区人妻系列日韩精品少妇| 免费看无码自慰一区二区| 中文字幕无码av不卡一区| 欲乱人妻少妇邻居毛片| 成人无码视频| 亚洲国产高清精品线久久| 国产综合视频一区二区三区| 亚洲www永久成人网站|