Android源碼創建新模塊加入源碼自動編譯

Android源碼創建新模塊加入源碼自動編譯

Android源碼添加新的模塊
1.前言
我們在源碼中添加新的模塊的時候,並不是說你簡單編寫好模塊的Android.mk之後就完事兒了,你在全編譯的時候,輸入make命令之後,等編譯之後你會發現你新加的模塊並沒有加入到源碼的自動編譯之中,這是爲什麼呢?後面詳細說明。
2.原因
這是因爲你沒有告訴系統你的模塊需要參加編譯,就像你不告訴別人我喜歡你,她永遠也不會知道一樣,一定要主動告訴她。
好的,那通過如何告訴“她”呢?那就需要了解Android源碼的編譯規則,我在上篇博客中有簡單提到,這邊就相當於對它的一個補充吧。
3.方法
方法大體有兩種,一種是在android源碼的原生的mk文件PRODUCT_PACKAGES宏中添加你的模塊,還有一種是在你的Android.mk文件中加入一個ALL_DEFAULT_INSTALLED_MODULES宏變量。
對於方法一,android系統默認的PRODUCT_PACKAGES的變量配置mk文件一般存在於build/target/product下,此外和自己hardware平臺相關的模塊需求一般是定義到device目錄下的product.mk或者device.mk文件中,定位到PRODUCT_PACKAGES這個變量,往後面加就行了。
對於方法二,我們可以在自定義的mk文件中添加這一行:
ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_MODULE)
4.原理
對於第一種方式原理不提了,第二種的話需要提一下
我們到源碼路徑的 /build/core/main.mk
找到下面的target:

.PHONY: files
files: prebuilt
$(modules_to_install)
(INSTALLEDANDROIDINFOTXTTARGET)1234(INSTALLED_ANDROID_INFO_TXT_TARGET) 1 2 3 4 這個變量(modules_to_install),從名字上可以看到這個是會被install的,那意思是會被加進變量的宏控制變量,繼續往下跟蹤這個變量的源頭,會發現:

modules_to_install := $(sort
$(ALL_DEFAULT_INSTALLED_MODULES)
$(product_FILES)
(foreachtag,(foreach tag,(tags_to_install),(((tag)_MODULES))
KaTeX parse error: Expected group after '_' at position 32: …-modules, shell_̲(TARGET_SHELL))
$(CUSTOM_MODULES)
)
1
2
3
4
5
6
7
4.注意
注意m/mm/mmm的區別,根據build源碼看規則差異。
好了後面再寫吧,沒時間了,有興趣的童鞋可以自己研究一下。

原文鏈接:https://blog.csdn.net/angelsmiling/article/details/93973919

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章