NB物聯網之天翼物聯(3)——初窺編解碼插件(java開發物聯網)

前言

電信的編解碼插件本意上是可以讓我們的開發更加靈活,但是你好歹把文檔寫明白啊。。。同時在正常的生產中我們的產品不可能只使用電信的模塊,有時甚至是客戶要求使用移動還是電信的模塊,所以兼容性給我們的體驗非常直觀!我們先不考慮兼容性問題,先把流程走通吧還是!

編解碼插件的兩種形式

1、線上編輯
當大家剛看到線上編輯的時候內心一定非常激動,想咋改咋改,而且看上去非常直觀,但是當你真正看到這個頁面時估計會懵逼,@#%#%¥#%,在定義profile的時候相信你已經發現了,字段類型只有int 和string類型,而且string類型是用ascii碼傳遞的,而在線編解碼工具規定,profile中字段是什麼類型編解碼就必須使用什麼類型去接受!總之,非常難用~~,不推薦大家使用!!
2、離線編解碼插件
離線編解碼插件活動空間就比較大了,首先這個東西是一個jar包,當設備有上傳信息的時候會調用你這個jar包中的一個接口,在接口內部你可以任意操作(死循環除外 - -||),然後根據不同的上傳類型(根據解析16進制碼流得出)傳到不同的profile 中的對應的 service 中去(根據serviceId);下發也是同樣的道理!但是捏,電信不可能什麼東西都讓你往他的服務器上傳的,所以需要人工審覈!
總結:華爲官方的文檔是不推薦使用離線編解碼插件的,我們最開始也不太想用,太麻煩了,而且一旦修改就要現申請,但是最後大家都沒研究透怎麼使用在線編輯的方式,有能夠吃透的大神歡迎留言!

下載離線編解碼插件包包

如果你想在電信的文檔中找到這個編解碼插件的樣例估計會很難,首先它沒有一個明確的位置,其次電信網站非常卡點一下半天不動,所以我們是作者去華爲的物聯網平臺文檔去找,果然他就在 這裏!
在這裏插入圖片描述
在這裏插入圖片描述
這是一個java 的 maven項目,下載完成之後我們來一起看下它的結構!

包包裏有什麼

如圖所示:
在這裏插入圖片描述
codeDemo裏面有兩個文件夾,第一個文件夾是編解碼插件上傳格式,這裏暫且不敘,等我們走到上傳的時候在詳細瞭解!
第二個文件夾中是項目,沒錯就是它!直接導入!
在這裏插入圖片描述
正常的maven項目導入過程,不多說了。
導入完成,項目結構如下圖所示
在這裏插入圖片描述
這個地方乍看上去是個普通的項目,其實很有講究喲!

沒想到,你是這麼不正經的包包

到了看項目結構就要先了解一下編解碼插件包了,以下是上傳的編解碼插件包的要求:
1、產品已定義profile
2、插件包中應存在package-info.json文件
3、package-info.json文件中bundles.bundleName的值應爲:‘設備類型-廠商Id-模型’
4、package-info.json文件中model的值與產品profile中的應保持一致
5、package-info.json文件中deviceType的值與產品profile中的應保持一致
6、package-info.json文件中manufacturerName的值與產品profile中的應保持一致
7、package-info.json文件中packageType的值應爲’CIGPlugin’
8、package-info.json文件中version和bundleVersion的值應保持一致
9、package-info.json文件中platform的值應爲’linux’
10、package-info.json文件中specVersion的值應爲’1.0’
11、package-info.json文件中應有bundles字段值
12、package-info.json文件bundles.fileName的值應爲編解碼插件jar包中的./META-INF/MANIFEST.MF文件中[Bundle-Name的值]-[Bundle-Version的值].jar
13、package-info.json文件bundles.bundleVersion的值與編解碼插件jar包./META-INF/MANIFEST.MF文件Bundle-Version的值應保持一致
14、package-info.json文件bundles.bundleName的值與編解碼插件jar包./META-INF/MANIFEST.MF文件Bundle-Name的值應保持一致
15、插件jar包中的./META-INF/MANIFEST.MF文件中Bundle-Name與Bundle-SymbolicName的值應保持一致
16、插件jar包中應存在./META-INF/MANIFEST.MF文件
17、插件jar包中的./META-INF/MANIFEST.MF文件不應包含Export_Package屬性
18、插件jar包中的./META-INF/MANIFEST.MF文件應包含Bundle-Name
19、插件jar包中的./META-INF/MANIFEST.MF文件應包含Bundle-Version
20、插件jar包中的./META-INF/MANIFEST.MF文件應包含Bundle-SymbolicName
21、插件jar包中./OSGI-INF目錄下有且只有一個xml文件
22、在插件jar包中./OSGI-INF目錄下的xml文件中,scr標籤應包含name屬性,implementation標籤應包含class屬性,provide標籤應包含interface屬性
23插件jar包中./OSGI-INF目錄下的xml文件implementation標籤的class屬性值應與scr標籤下的name屬性值保持一致

沒錯足足有23條,那麼我們怎樣去滿足這23條要求呢? 請看下回分解。

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