Ⅰ android make 基礎
Android編譯演進過程:
build/ 目錄下
source build/envsetup.sh
輸入指令hmm 就可以查看信息
lunch 2
通過soong執行編譯構建,這里執行make命令時,main.mk文件把一些環境變數和目標都配置好後,會執行envsetup.sh中的make()進行編譯。
build/soong/soong_ui.bash --make-mode
------->
soong的編譯過程:
soong_ui.bash 調用流程:
可以看到include 了main.mk文件,從main.mk開始,將通過include命令將其所有需要的.mk文件包含進來,最終在內存中形成一個包括所有編譯腳本的集合,這個相當於一個巨大Makefile文件。Makefile文件看上去很龐大,其實主要由三種內容構成: 變數定義、函數定義和目標依賴規則,此外mk文件之間的包含也很重要。
5.工具鏈的關系
REF
https://blog.csdn.net/yiranfeng/article/details/109082489
Ⅱ 第二章:Android.bp語法
注意 :關於Android.bp的權威解釋可以參見 android.bp權威文檔
Google官方語法文檔 https://android.googlesource.com/platform/build/soong
從前面的列子可以看出定義一個模塊從模塊的類型開始,模塊有不同的類型,如前面例子中的cc_library_shared,當然類型還有很多種,譬如 cc_binary、android_app 、cc_library_static 等等。模塊包含一些屬性格式為「property-name:property-value」,其中name屬性必須指定,其屬性值必須是全局唯一的。
其中默認模塊可用於在多個模塊中重復相同的屬性
srcs 屬性以字元串列表的形式指定用於編譯模塊的源文件。您可以使用模塊引用語法 「:」 來引用生成源文件的其他模塊的輸出,如 genrule 或 filegroup。
實例說明:
我們知道Android.mk中可以定義變數,當然作為新編譯系統中替代Android.mk的Android.bp也是一定存在,更加何況Android.mk還可以一定條件的轉換成Android.bp。
變數范圍限定為聲明它們的文件的其餘部分,可以使用 「=」 號賦值, 但是不能使用 「:=」 賦值。變數是不可變的,但有一個例外它們可以附上+= 賦值,但僅在變數被引用之前。
下面我們看一下正確使用變數的列子:
我們知道Android.mk中可以進行注釋,當然Android.bp裡面也可以,Android.mk中使用 # 然後添加註釋,Android.bp使用單行注釋 // 和多行注釋 /* */ 兩種方式。
具體支持以下幾種類型:
String類型、字元串列表類型和Map類型支持操作符 + 。
Android.bp可以支持android_app、cc_binary、cc_binary_host等多種類型,具體定義在Android源碼的 build/soong/androidmk/cmd/androidmk/android.go 可以查看,具體如下:
Android.bp可以支持多種預編譯類型,具體定義在Android源碼的 build/soong/androidmk/cmd/androidmk/android.go 可以查看,如下圖所示:
例如: system/core/libusbhost/Android.bp aosp9.0開始
Android.bp是一門實戰性的東西,光說不練沒有啥用,說再多不如直接開練來得舒服。那就直接開始手撕實例了,讓我們開戰嗎!
下面幾種庫編譯類型:
2.1 動態庫類型
最終編譯為so包
**2.2 java庫類型: **
最終編譯為jar包
2.3 Andorid應用類型
最終編譯為apk包
轉自: https://blog.csdn.net/tkwxty/article/details/104395820
Ⅲ 阿里平頭哥宣布,自研處理器已成功落地,它的性能如何
阿里巴巴宣布旗下的平頭哥半導體完成了安卓10對RISC-V的移植並開源了全部相關代碼。從平頭哥社區發布的信息來看,安卓10系統已經可以在玄鐵910晶元上流暢運行。至於玄鐵910,則是前年阿里巴巴旗下的平頭哥半導體發布的一款號稱是業界最強的RISC-V處理器內核IP。資料顯示,玄鐵910單核性能達到7.1 Coremark/MHz,主頻達到2.5GHz,比當時業界最好的RISC-V處理器性能高40%以上。據介紹,玄鐵910可以用於設計製造高性能端上晶元,應用於5G、人工智慧以及自動駕駛等領域。