1.首先Android.bp的語法是不支持if 條件語句的
2.查到可以用enabled來控制Android.bp中的模塊是否參與編譯,但是并不能實現動態的控制,比如你需要根據獲取到的安卓版本來控制一個Android.bp是否編譯,是無法做到的。enabled只能是固定的true或者false。
3.查到有用go腳本來動態控制向Android.bp增加CFlag的寫法:【Android.bp正確姿勢添加宏控制編譯指南】
但是嘗試了是無法向Android.bp覆蓋enabled的操作的,也就是說即便你在go腳本中動態控制了enabled,但是Android.bp中的enabled并不會改變。
這邊有看到一篇博客介紹的是通過go 腳本來動態控制需要編譯的源文件,從而編出不一樣的庫:
【Android.bp 條件編譯實現指南】
但是這篇博客和我的需求是不一樣的,我需要直接能條件控制Android.bp中的模塊是否參與編譯,因為實戰中我們可能需要完全區分開兩個類似的模塊,比如需要動態控制使用aidl \ hidl 接口,這種情況下,不光源文件不一樣,依賴庫也不一樣
4.最好的辦法就是將現有的Android.bp換成Android.mk, 需要注意的是換成Android.mk之后需要主動讓這個Android.mk編譯起來,可以參考【如何讓新增的Android.mk參與編譯】
另外,如果大家有更好的辦法,歡迎在評論區討論或者私信,我也是在不斷的摸索,可能了解的有些片面,歡迎指教。