您好,登錄后才能下訂單哦!
這篇文章主要介紹“ 如何為iotjs開發(fā)原生模塊”,在日常操作中,相信很多人在 如何為iotjs開發(fā)原生模塊問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答” 如何為iotjs開發(fā)原生模塊”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
iotjs 是三星開源的 javascript 物聯(lián)網(wǎng)開發(fā)平臺。它為 javascript 應(yīng)用程序提供了訪問硬件、網(wǎng)絡(luò)、文件系統(tǒng)和異步化的能力,功能類似于 nodejs,但無論是代碼體積還是內(nèi)存需求,iotjs 都要小很多,是用 javascript 開發(fā) iot 設(shè)備應(yīng)用程序的首選。
AWTK 全稱 Toolkit AnyWhere,是 ZLG 開發(fā)的開源 GUI 引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機和 PC 打造的通用 GUI 引擎,為用戶提供一個功能強大、高效可靠、簡單易用、可輕松做出炫酷效果的 GUI 引擎。
如果模塊的名稱使用 mymodule 是沒有問題的,但是 mymodule 是一個無意義的名稱,無法表達實際模塊的真實功能。我這里需要把模塊改名為 awtk,可以按下列方式來做:
目錄名使用 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_ 一定要寫實際模塊的名稱,如果忘記將 MYMODULE 修改成實際模塊的名稱,出現(xiàn)的錯誤讓你完全不知道是什么情況。
自己的模塊免不了使用外部庫,但是 modules.json 里可以指定庫的名稱,卻不能指定庫的路徑和頭文件的路徑。做了嘗試始終沒有成功,后來只好自己寫了一個 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")
使用下面這行代碼開啟 verbose 模式,可以看到大量調(diào)試信息,有助于快速定位問題所在:
SET( CMAKE_VERBOSE_MAKEFILE ON )
然后在 CMakeLists.txt 里引用:
include(../awtk-iotjs/awtk-module/awtk.cmake) include(cmake/iotjs.cmake)
一定要放在 iotjs.cmake 之前引用,否則無效。
將模塊放在獨立的目錄中,管理起來方便一些,awtk-iotjs 是為 iotjs 寫的模塊,它依賴與 awtk 和 awtk-js,將在幾個模塊放在同級的目錄。
awtk
awtk-js
iotjs
awtk-iotjs
編譯腳本改為:
${iotjs_ROOT}/tools/build.py --external-modules=${CWD}/awtk-module --cmake-param=-DENABLE_MODULE_AWTK=ON
運行腳本改為:
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開發(fā)原生模塊”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。