打開鴻蒙系統(tǒng)的源碼,可以看到有這么一個(gè)文件夾:third_party。里面存放的是第三方的代碼。
點(diǎn)開我們可以看到有很多第三方代碼:
后續(xù)我們?nèi)绻枰到y(tǒng)中添加、移植任何開源代碼,都可以添加到這個(gè)文件夾中。
接下來,教大家如何添加一個(gè)自己的軟件包,名字為 a_myparty。
01
新建一個(gè)文件夾 a_myparty
02
往文件中放置軟件包源碼
這里我放在的是 myparty.c 文件。
03
新建 BUILD.gn 文件
整個(gè)代碼目錄如下:
04
myparty.c 文件內(nèi)容如下
其實(shí),我這個(gè)只是為了演示的,所以里面代碼沒什么作用:
#include
05
BUILD.gn 文件內(nèi)容如下
BUILD.gn 文件主要是描述了軟件包的相關(guān)信息,包括編譯哪些源文件,頭文件路徑、編譯方式(目前 Hi3861 只支持靜態(tài)加載)。
import("http://build/lite/config/component/lite_component.gni") import("http://build/lite/ndk/ndk.gni") #這里是配置頭文件路徑 config("a_myparty_config"){ include_dirs=[ ".", ] } #這里是配置要編譯哪些源碼 a_myparty_sources=[ "myparty.c", ] #這里是靜態(tài)鏈接,類似于Linux系統(tǒng)的.a文件 lite_library("a_myparty_static"){ target_type="static_library" sources=a_myparty_sources public_configs=[":a_myparty_config"] } #這里是動(dòng)態(tài)加載,類似于Linux系統(tǒng)的.so文件 lite_library("a_myparty_shared"){ target_type="shared_library" sources=a_myparty_sources public_configs=[":a_myparty_config"] } #這里是入口,選擇是靜態(tài)還是動(dòng)態(tài) ndk_lib("a_myparty_ndk"){ if(board_name!="hi3861v100"){ lib_extension=".so" deps=[ ":a_myparty_shared" ] }else{ deps=[ ":a_myparty_static" ] } head_files=[ "http://third_party/a_myparty" ] }
到了這里我們基本上就寫完了。最后我們要讓這個(gè)第 3 放軟件包編譯到我們固件中。
06
打開第 3 方軟件包功能,使其參與編譯
打開 vendorhisihi3861hi3861BUILD.gn 文件,在下圖部分添加 "http://third_party/a_myparty:a_myparty_static",別忘了分號(hào)。
07
使用
到了這里我們的第 3 方軟件包就添加完成了,接下來我們要在 app 代碼中使用它。
打開 applicationssamplewifi-iotappmy_first_appBUILD.gn 文件,沒有的同學(xué)請(qǐng)自己先完成 hello world 入門例程先。
添加 "http://third_party/a_myparty" 頭文件路徑,BUILD.gn 文件內(nèi)容如下:
static_library("my_first_app"){ sources=[ "hello_world.c" ] include_dirs=[ "http://utils/native/liteos/include", "http://third_party/a_myparty" ] } 打開 hello_world.c 文件,內(nèi)容如下:#include"ohos_init.h" #include"ohos_types.h" #include"stdio.h" //導(dǎo)入頭文件 #include"myparty.h" voidHelloWorld(void) { printf("%s%d ",__FILE__,__LINE__); printf("[DEMO]Helloworld. "); //調(diào)用第3方軟件包的函數(shù)myparty_test() myparty_test(); } SYS_RUN(HelloWorld);
08
最后編譯測(cè)試即可看到打印信息
[DEMO]Helloworld. firstmyparty
說明添加成功。
責(zé)任編輯:PSY
原文標(biāo)題:如何往鴻蒙系統(tǒng)源碼中添加第三方軟件包
文章出處:【微信公眾號(hào):HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
源碼
+關(guān)注
關(guān)注
8文章
652瀏覽量
29454 -
軟件包
+關(guān)注
關(guān)注
0文章
104瀏覽量
11657 -
鴻蒙系統(tǒng)
+關(guān)注
關(guān)注
183文章
2638瀏覽量
66709
原文標(biāo)題:如何往鴻蒙系統(tǒng)源碼中添加第三方軟件包
文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
EE-303:將VisualDSP線程安全庫與第三方RTOS配合使用
![EE-303:將VisualDSP線程安全庫與<b class='flag-5'>第三方</b>RTOS配合使用](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
第三方檢測(cè)機(jī)構(gòu)該如何提升核心競(jìng)爭力?
![<b class='flag-5'>第三方</b>檢測(cè)機(jī)構(gòu)該如何提升核心競(jìng)爭力?](https://file1.elecfans.com//web3/M00/02/AA/wKgZO2dhK8mADZspAAbBuklAUwQ837.png)
鴻蒙Flutter實(shí)戰(zhàn):05-使用第三方插件
瑞芯微RK3566鴻蒙開發(fā)板Android11修改第三方輸入法為默認(rèn)輸入法
![瑞芯微RK3566<b class='flag-5'>鴻蒙</b>開發(fā)板Android11修改<b class='flag-5'>第三方</b>輸入法為默認(rèn)輸入法](https://file1.elecfans.com/web2/M00/07/9D/wKgZombyGNqAJ2h0AAB5aXv3W1c207.png)
三維天地低代碼開發(fā)平臺(tái)助力第三方質(zhì)檢行業(yè)數(shù)據(jù)可視化
![<b class='flag-5'>三</b>維天地低代碼開發(fā)平臺(tái)助力<b class='flag-5'>第三方</b>質(zhì)檢行業(yè)數(shù)據(jù)可視化](https://file1.elecfans.com//web2/M00/01/79/wKgZoma1sEqATkZwAAMh0gN0bKg273.png)
評(píng)論