這篇文章主要介紹“ 如何為iotjs開(kāi)發(fā)原生模塊”,在日常操作中,相信很多人在 如何為iotjs開(kāi)發(fā)原生模塊問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答” 如何為iotjs開(kāi)發(fā)原生模塊”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)全網(wǎng)整合營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、揭陽(yáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城網(wǎng)站定制開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為揭陽(yáng)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
iotjs 是三星開(kāi)源的 javascript 物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái)。它為 javascript 應(yīng)用程序提供了訪問(wèn)硬件、網(wǎng)絡(luò)、文件系統(tǒng)和異步化的能力,功能類(lèi)似于 nodejs,但無(wú)論是代碼體積還是內(nèi)存需求,iotjs 都要小很多,是用 javascript 開(kāi)發(fā) iot 設(shè)備應(yīng)用程序的首選。
AWTK 全稱 Toolkit AnyWhere,是 ZLG 開(kāi)發(fā)的開(kāi)源 GUI 引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機(jī)和 PC 打造的通用 GUI 引擎,為用戶提供一個(gè)功能強(qiáng)大、高效可靠、簡(jiǎn)單易用、可輕松做出炫酷效果的 GUI 引擎。
如果模塊的名稱使用 mymodule 是沒(méi)有問(wèn)題的,但是 mymodule 是一個(gè)無(wú)意義的名稱,無(wú)法表達(dá)實(shí)際模塊的真實(shí)功能。我這里需要把模塊改名為 awtk,可以按下列方式來(lái)做:
目錄名使用 awtk-module
mkdir awtk-module
將 C 代碼的源文件改名為 awtk_module.c,并將初始化函數(shù)改名 InitAwtkNativeModule。
創(chuàng)建 awtk-module/modules.json
{ "modules": { "awtk": { "native_files": ["awtk_module.c"], "init": "InitAwtkNativeModule", "external_libs":["awtk-jerryscript", "jerryscript", "awtk", "assets", "glad", "gpinyin", "linebreak", "nanovg"], "platforms": { "linux": { "external_libs":["SDL2", "gtk-3", "gdk-3", "sndio", "Xext", "X11", "stdc++", "dl", "m"] } } } } }
修改編譯腳本參數(shù)
tools/build.py --external-modules=awtk-module --cmake-param=-DENABLE_MODULE_AWTK=ON
ENABLE_MODULE_ 一定要寫(xiě)實(shí)際模塊的名稱,如果忘記將 MYMODULE 修改成實(shí)際模塊的名稱,出現(xiàn)的錯(cuò)誤讓你完全不知道是什么情況。
自己的模塊免不了使用外部庫(kù),但是 modules.json 里可以指定庫(kù)的名稱,卻不能指定庫(kù)的路徑和頭文件的路徑。做了嘗試始終沒(méi)有成功,后來(lái)只好自己寫(xiě)了一個(gè) cmake 文件,在 iotjs 的 CMakeLists.txt 引用了。
awtk.cmake 的內(nèi)容如下:
GET_FILENAME_COMPONENT(PROJ_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) SET(AWTK_ROOT ${PROJ_ROOT}/awtk) SET(AWTK_JS_ROOT ${PROJ_ROOT}/awtk-js) SET(APP_ASSETS_ROOT ${AWTK_ROOT}/demos) SET(AWTK_JS_FILE ${AWTK_JS_ROOT}/src/awtk.js) MESSAGE("AWTK_ROOT=${AWTK_ROOT}") MESSAGE("AWTK_JS_ROOT=${AWTK_JS_ROOT}") MESSAGE("AWTK_JS_ROOT=${CMAKE_CURRENT_LIST_DIR}") SET( CMAKE_VERBOSE_MAKEFILE ON ) ADD_COMPILE_OPTIONS("-DAWTK_JS_FILE=\"${AWTK_JS_FILE}\"") ADD_COMPILE_OPTIONS("-DAPP_ASSETS_ROOT=\"${APP_ASSETS_ROOT}\"") LINK_DIRECTORIES("${AWTK_ROOT}/lib" "${AWTK_JS_ROOT}/lib") INCLUDE_DIRECTORIES("${AWTK_ROOT}/src/" "${AWTK_ROOT}/src/ext_widgets/" "${AWTK_JS_ROOT}/src/jerryscript")
使用下面這行代碼開(kāi)啟 verbose 模式,可以看到大量調(diào)試信息,有助于快速定位問(wèn)題所在:
SET( CMAKE_VERBOSE_MAKEFILE ON )
然后在 CMakeLists.txt 里引用:
include(../awtk-iotjs/awtk-module/awtk.cmake) include(cmake/iotjs.cmake)
一定要放在 iotjs.cmake 之前引用,否則無(wú)效。
將模塊放在獨(dú)立的目錄中,管理起來(lái)方便一些,awtk-iotjs 是為 iotjs 寫(xiě)的模塊,它依賴與 awtk 和 awtk-js,將在幾個(gè)模塊放在同級(jí)的目錄。
awtk
awtk-js
iotjs
awtk-iotjs
編譯腳本改為:
${iotjs_ROOT}/tools/build.py --external-modules=${CWD}/awtk-module --cmake-param=-DENABLE_MODULE_AWTK=ON
運(yùn)行腳本改為:
if [ "$1" == "" ]; then JS_FILE="demos/button.js" else JS_FILE="$1" fi ${iotjs_ROOT}/build/x86_64-linux/debug/bin/iotjs "$JS_FILE"
到此,關(guān)于“ 如何為iotjs開(kāi)發(fā)原生模塊”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
分享題目:如何為iotjs開(kāi)發(fā)原生模塊
標(biāo)題網(wǎng)址:http://vcdvsql.cn/article18/iighdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、搜索引擎優(yōu)化、品牌網(wǎng)站設(shè)計(jì)、標(biāo)簽優(yōu)化、商城網(wǎng)站、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)