溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何為iotjs開發(fā)原生模塊

發(fā)布時間:2021-12-29 10:12:47 來源:億速云 閱讀:217 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹“ 如何為iotjs開發(fā)原生模塊”,在日常操作中,相信很多人在 如何為iotjs開發(fā)原生模塊問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答” 如何為iotjs開發(fā)原生模塊”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

為 iotjs 開發(fā)原生模塊

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)的錯誤讓你完全不知道是什么情況。

二、編譯參數(shù)

自己的模塊免不了使用外部庫,但是 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>

向AI問一下細節(jié)

免責(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)容。

AI