<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Android 車載開發(fā)

          共 5375字,需瀏覽 11分鐘

           ·

          2021-08-29 13:16

          和你一起終身學(xué)習(xí),這里是程序員Android

          經(jīng)典好文推薦,通過(guò)閱讀本文,您將收獲以下知識(shí)點(diǎn):

          一、Android開發(fā)者的新賽道
          二、什么是Android Automtive?
          三、創(chuàng)建Android Automtive模擬器
          四、下載&編譯 Android Automotive
          五、參考資料

          一、Android開發(fā)者的新賽道

          在智能手機(jī)行業(yè)初興起時(shí),包括BAT在內(nèi)許多傳統(tǒng)互聯(lián)網(wǎng)企業(yè)都曾布局手機(jī)產(chǎn)業(yè),但是隨著手機(jī)市場(chǎng)的基本定型,造車似乎又成了各大資本下一個(gè)追逐的方向。百度、小米先后宣布造車,阿里巴巴則與上汽集團(tuán)共同投資創(chuàng)立了,面向汽車全行業(yè)提供智能汽車操作系統(tǒng)和智能網(wǎng)聯(lián)汽車整體解決方案的斑馬網(wǎng)絡(luò),一時(shí)間造車儼然成了資本市場(chǎng)的下一個(gè)風(fēng)口。

          而作為移動(dòng)端操作系統(tǒng)的霸主 - Android,也以一種新的姿態(tài)高調(diào)侵入造車領(lǐng)域,這就是 Android 車載信息娛樂(lè)系統(tǒng) - Android Automotive。

          image

          二、什么是Android Automtive?

          Android Automotive 是一個(gè)基本 Android 平臺(tái)車載信息娛樂(lè)系統(tǒng),簡(jiǎn)稱IVI(In-Vehicle Infotainment)。

          Android Automotive系統(tǒng)賦予了車廠在IVI 系統(tǒng)中預(yù)裝 Android 應(yīng)用的能力,而大量的Android開發(fā)從業(yè)者,也降低的IVI系統(tǒng)以及應(yīng)用的開發(fā)成本

          2.1 Android Automotive 和 Android

          • Android Automotive 就是 Android 平臺(tái)。Android Automotive 并非 Android 的分支或并行開發(fā)版本。它與手機(jī)和平板電腦等設(shè)備上搭載的 Android 使用相同的代碼庫(kù),位于同一個(gè)存儲(chǔ)區(qū)中。它基于開發(fā)時(shí)間逾 10 載的強(qiáng)大平臺(tái)和功能集構(gòu)建而成,因此能夠利用現(xiàn)有的安全模型、兼容性計(jì)劃、開發(fā)者工具和基礎(chǔ)架構(gòu),同時(shí)繼續(xù)保持較高的可定制性和可移植性,完全免費(fèi)提供并且開源。

          • Android Automotive 擴(kuò)展了 Android 平臺(tái)。在將 Android 打造為功能完善的信息娛樂(lè)平臺(tái)的過(guò)程中,我們?cè)黾恿藢?duì)汽車特定要求、功能和技術(shù)的支持。Android Automotive 將是一個(gè)一站式全棧車載信息娛樂(lè)平臺(tái),就像現(xiàn)在的 Android 系統(tǒng)之于移動(dòng)設(shè)備一樣。

          2.2 Android Automotive 和 Android Auto

          • Android Auto 是一個(gè)基于用戶的手機(jī)運(yùn)行的平臺(tái),可通過(guò) USB 連接將 Android Auto 用戶體驗(yàn)投射到兼容的車載信息娛樂(lè)系統(tǒng)。Android Auto 支持專為車載用途而設(shè)計(jì)的應(yīng)用。如需了解詳情,請(qǐng)?jiān)L問(wèn) developer.android.com/auto。

          • Android Automotive 是直接基于車載硬件運(yùn)行的操作系統(tǒng)和平臺(tái)。它是一個(gè)可定制程度非常高的全棧開源平臺(tái),可為信息娛樂(lè)體驗(yàn)提供強(qiáng)大的技術(shù)支持。Android Automotive 支持專為 Android 打造的應(yīng)用,以及專為 Android Auto 打造的應(yīng)用。

          2.3 Android Automotive 的架構(gòu)設(shè)計(jì)概述

          Android Automotive作為車載信息娛樂(lè)系統(tǒng)必須具備查看、控制整車其它子系統(tǒng)(如 空調(diào))的能力,但是不同的制造商提供的總線類型和協(xié)議之間有很大差異,例如控制器局域網(wǎng) (CAN) 總線、區(qū)域互連網(wǎng)路 (LIN) 總線、面向媒體的系統(tǒng)傳輸 (MOST) 總線以及汽車級(jí)以太網(wǎng)和 TCP/IP 網(wǎng)絡(luò)(如 BroadR-Reach)。

          Android Automotive 的硬件抽象層 (HAL) 為 Android 框架提供了一致的接口(無(wú)需考慮物理傳輸層),系統(tǒng)集成商可以將特定功能的平臺(tái) HAL 接口(如 空調(diào))與特定于技術(shù)的網(wǎng)絡(luò)接口(如 CAN 總線)連接,以實(shí)現(xiàn)車載 HAL 模塊。

          image

          • Car API:內(nèi)有包含 CarSensorManager 在內(nèi)的 API。如需詳細(xì)了解受支持的 API,請(qǐng)參閱/platform/packages/services/Car/car-lib

          • CarService:位于 /platform/packages/services/Car/

          • 車載 HAL:用于定義 OEM 可以實(shí)現(xiàn)的車輛屬性的接口。包含屬性元數(shù)據(jù)(例如,車輛屬性是否為 int 以及允許使用哪些更改模式)。位于 hardware/libhardware/include/hardware/vehicle.h。如需了解基本參考實(shí)現(xiàn),請(qǐng)參閱 hardware/libhardware/modules/vehicle/

          作為車載應(yīng)用開發(fā)者,對(duì)于Android Automotive 的架構(gòu),有個(gè)基礎(chǔ)認(rèn)知即可并不影響我們后續(xù)對(duì)車載應(yīng)用開發(fā)的學(xué)習(xí)。

          三、創(chuàng)建Android Automtive模擬器

          為了讓便于我們對(duì)Android Automotive有一個(gè)直觀上的認(rèn)知,我們可以先在Android Studio上創(chuàng)建一個(gè)模擬器。下面的Android Automtive模擬器創(chuàng)建步驟基于MAC OS版Android Studio Arctic Fox

          • 1.在Preferences(Windows下是Settings) -> Appearance&Behavior -> System Settings ->Updates 中將檢查更新的channel改為Canary Channel

          image

          • 2.在創(chuàng)建模擬器的時(shí)候選擇一個(gè)你需要的 Android Automotive 鏡像

          image

          • 3.最后,我們就可以使用Android Automotive的模擬器了

          image

          模擬器到此為止就創(chuàng)建完畢了,可以隨便把玩一波,看看google是如何理解車載娛樂(lè)系統(tǒng)的。

          不得不說(shuō)的是,在國(guó)內(nèi)實(shí)際的車載應(yīng)用開發(fā)中,我們很少會(huì)把應(yīng)用直接跑在模擬器上,其中一個(gè)原因就是AS創(chuàng)建的Android Automotive模擬器是production版本,我們并不能獲取root、remount權(quán)限,這非常不利于我們的調(diào)試。

          這里額外提一句,通過(guò)Android Studio創(chuàng)建的手機(jī)模擬器,無(wú)需任何操作就可以獲取root權(quán)限。然后還可以通過(guò)控制臺(tái)在Android/sdk/emulator目錄下,運(yùn)行下面的指令來(lái)開放remount權(quán)限

          emulator -writable-system -netdelay none -netspeed full -avd 模擬器的名字

          為了在模擬器中獲取root、remount權(quán)限,以及方便我們之后研究Android Automotive上原生應(yīng)用的原理,這里我們接著來(lái)介紹一下如何下載 Android Automotive 源碼,以及如何編譯源碼。

          四、下載&編譯 Android Automotive

          由于眾所周知的原因國(guó)內(nèi)下載AOSP速度非常緩慢,所以以下步驟使用清華大學(xué)的AOSP鏡像。下載以及編譯環(huán)境推薦使用Ubuntu系統(tǒng),編譯Android 9及以上的AOSP,硬盤需要預(yù)留500GB以上的空間,內(nèi)存也至少需要8GB以上。以下內(nèi)容基于如下環(huán)境編寫。

          image

          1. 下載repo工具

          mkdir ~/bin
          PATH=~/bin:$PATH
          curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
          chmod a+x ~/bin/repo

          2. 下載初始化包

          從 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar下載初始化包。由于首次同步需要下載約 130GB 數(shù)據(jù),過(guò)程中任何網(wǎng)絡(luò)故障都可能造成同步失敗,強(qiáng)烈建議直接使用初始化包進(jìn)行初始化。使用方法如下:

          wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下載初始化包,可以用下載工具代替
          tar xf aosp-latest.tar #解壓初始化包
          cd aosp # 解壓得到的 AOSP 工程目錄
          # 這時(shí) ls 的話什么也看不到,因?yàn)橹挥幸粋€(gè)隱藏的 .repo 目錄

          此后,每次只需運(yùn)行 repo sync 即可保持與主分支同步。當(dāng)然我們也可以選擇我們指定的Android版本,繼續(xù)如下的操作

          cd .repo/manifests
          git branch -a # 查看Android分支

          image

          repo init -b android-11.0.0.0_r40 # 切換到Android 11
          repo sync # 再同步一遍即可得到基于Android 11的完整目錄

          3. 準(zhǔn)備編譯環(huán)境

          在Ubuntu的控制臺(tái)中執(zhí)行下列指令來(lái)安裝編譯AOSP所必需各類型工具

          sudo apt-get update
          sudo add-apt-repository ppa:openjdk-r/ppa
          sudo apt-get update
          sudo apt-get install openjdk-8-jdk
          sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
          sudo apt-get install -y lib32stdc++6 sudo apt-get install git
          sudo apt-get install libssl-dev

          4. 開始編譯

          • 1.在aosp根目錄的控制臺(tái)中執(zhí)行下列指令,初始化腳本

          source build/envsetup.sh

          • 2.使用lunch選擇編譯的目標(biāo)類型。因?yàn)槭窃陔娔X上調(diào)試編譯出的版本,所以這里我們選擇 aosp_car_x86_64-userdebug或aosp_car_x86-userdebug。

          lunch # 打開選擇菜單
          11 # 選擇 aosp_car_x86_64-userdebug

          image

          • 3.使用make -jX編譯源碼。電腦的CPU核心數(shù)越多,X可以設(shè)定的值越大,編譯速度也就越快,一般可以直接設(shè)為cpu核心數(shù),如果你的CPU支持超線程還可以再乘以2。

          make -j8 # 開始編譯

          image

          編譯時(shí)間取決于你電腦的性能,在機(jī)械硬盤下首次編譯約耗時(shí)5-7個(gè)小時(shí)。控制臺(tái)中提示Successful,即表示編譯成功。

          • 4.啟動(dòng)模擬器

          emulator -partition-size 1500 

          漫長(zhǎng)的開機(jī)動(dòng)畫之后,模擬器順利啟動(dòng)。可以看出我們自行編譯的模擬器,launcher 界面以及預(yù)裝的APP與Android Studio中提供的 Android Automotive 還是有很大區(qū)別的。在之后的時(shí)間里面,我們就來(lái)一一解析的這些系統(tǒng)應(yīng)用的運(yùn)行原理。

          image

          image

          5.常見錯(cuò)誤

          1.各類編譯環(huán)境報(bào)錯(cuò)

          一般環(huán)境報(bào)錯(cuò),百度一下基本上都解決。在這里強(qiáng)烈建議在 Ubuntu 16 或以上的Linux環(huán)境下編譯Android的源碼!我個(gè)人嘗試過(guò)在 Mac OS 和Windows OS下編譯Android源碼,各種錯(cuò)誤層出不窮,而換到 Ubuntu 環(huán)境下這些錯(cuò)誤幾乎就都沒(méi)有了。

          2. This user doesn't have permissions to use KVM

          解決方案,在控制臺(tái)執(zhí)行以下指令

          sudo chown 用戶名 -R /dev/kvm

          五、參考資料

          Automotive | Android 開源項(xiàng)目 | Android Open Source Project (google.cn)

          AOSP | 鏡像站使用幫助 | 清華大學(xué)開源軟件鏡像站 | Tsinghua Open Source Mirror

          原文鏈接:https://www.jianshu.com/p/bbc02e0f6575

          友情推薦:

          Android 開發(fā)干貨集錦

          至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺(jué)得很優(yōu)秀,歡迎點(diǎn)擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請(qǐng)聯(lián)系小編刪除,歡迎您的建議與指正。同時(shí)期待您的關(guān)注,感謝您的閱讀,謝謝!

          點(diǎn)擊閱讀原文,為大佬點(diǎn)贊

          瀏覽 84
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青草原夫妇在线观看视频网站 | 校园春色亚洲App下载 | 无码午夜成人 | 2024日韩无码 | 国产视频综合在线 |