天天看點

Android.bp文法注釋

關于Android.bp如何使用,查閱androidout目錄下的生成doc

$ROOT/out/soong/docs

https://android.googlesource.com/platform/build/soong/+/HEAD/docs/best_practices.md

androidmk工具:把android.mk轉換為android.bp

源碼在:build/soong/androidmk

在out下面找下androidmk工具

使用:

androidmk  android.mk > android.bp

這樣即可把android.mk轉換為android.bp檔案

轉換中可能遇見文法不比對,沒辦法自動轉換的情況,說兩種我的情況

error example:

ld.lld: error: undefined symbol:
           

連結過程找不到對應函數定義:确定對應連結庫函數是否寫明。如需置為未定義函數,Android.bp可使用allow_undefined_symbols: true,[這個變量寫在編譯規則裡面,類似g++ flag.但是獨立出來]

個人了解

1.Android.bp放在相對上層目錄,因為android建構規則不允許../../這樣的相對引用。

2.LOCAL_COPY_HEADERS被棄用,如果想将頭檔案之類export出去,你要手寫一個虛拟的庫,讓别人引用即可。

3.LOCAL_COPY_HEADERS_TO被棄用,想将頭檔案copy到指定目錄,你需要使用cmd指令實作,參考例子$ROOT/libcore/Android.bp#12

6 genrule {
7     name: "notices-for-framework-stubs",
8     tool_files: [
9         "NOTICE",
10         "ojluni/NOTICE",
11     ],
12     cmd: "cp -f $(location NOTICE) $(genDir)/NOTICES/libcore-NOTICE && cp -f $(location ojluni/NOTICE) $(genDir)/NOTICES/ojluni-NOTICE",
13     out: [
14         "NOTICES/libcore-NOTICE",
15         "NOTICES/ojluni-NOTICE",
16     ],
17 }           

繼續閱讀