前言
前面为大家介绍了编辑码插件的大体结构,本篇为大家详解怎么配置编解码插件上传包的参数!
第23条“婚约”
编解码插件上传位置
上一篇结尾我们说了如果进行插件开发,必须先了解上传插件包的结构和要求,何为“上传包”?
首先,这个“上传包”就在我们下载的demo文件中:
它指的是把我们写好的编解码插件打成一个jar包,然后再写一个配置文件,这个配置文件的内容与这个jar包相关,与你当前所处的电信平台的产品相关,也就是说配置文件关联你的jar包和当前需要上传jar包的项目!
综上所述,上传的文件会有各种各样的限制,直接上图证明俺不是瞎说的!
前14条主要约束我们的产品信息完整和配置文件内容,只要按照要求填写就完了!
这里我们不再一条条对了,直接跟大家说需要怎么修改package.zip中的package-info.json文件
首先文件格式如下:
{
"specVersion":"1.0",
"fileName":"codec-demo",
"version":"0.0.1",
"deviceType":"WaterMeter",
"manufacturerName":"bcdyd",
"model":"WaterMeter",
"description":"codec",
"platform":"linux",
"packageType":"CIGPlugin",
"date":"2019-11-26 08:16:59",
"ignoreList":[],
"bundles":[
{
"bundleName": "WaterMeter-厂商ID-WaterMeter",
"bundleVersion": "0.0.1",
"priority":5,
"fileName": "WaterMeter-厂商ID-WaterMeter-0.0.1.jar",
"bundleDesc":"",
"versionDesc":""
}]}specVersion:不需要修改;
fileName:不需要修改;
version:需要和你的jar包中版本对应,即与项目pom.xml 中的
<version>0.0.1</version>
一致;
deviceType:与你平台上的设备类型一致;
manufacturerName:与你平台上的厂商名称一致;
model:与你平台上的产品型号是一致的;
description:不需要修改;
platform:不需要修改;
packageType:不需要修改;
date:不需要修改;
ignoreList:不需要修改;
bundleName:设备类型-厂商ID-产品型号;
bundleVersion:与version一致;
priority:不需要修改;
fileName:jar包名字;
bundleDesc:不需要修改;
versionDesc:不需要修改;
修改项目中的pom文件:
大体结构:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.thrid.party</groupId>
<!-- 请修改为你的编解码插件的名字,命名规范:设备类型-厂商ID-设备型号,例如:WaterMeter-Huawei-NBIoTDevice -->
<artifactId>WaterMeter-Huawei-NBIoTDevice</artifactId>
<version>1.0.0</version>
<!-- 请检查这里的值为bundle,不能为jar -->
<packaging>bundle</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>4.11</junit.version>
<fasterxml.jackson.version>2.7.4</fasterxml.jackson.version>
<felix.maven.plugin.version>2.5.4</felix.maven.plugin.version>
<json.lib.version>2.4</json.lib.version>
<m2m.cig.version>1.3.1</m2m.cig.version>
<slf4j.api.version>1.7.6</slf4j.api.version>
<basedir>./</basedir>
</properties>
<dependencies>
<!-- 单元测试使用 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!-- 日志使用 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.api.version}</version>
</dependency>
<!-- 转换JSON使用,必须 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${fasterxml.jackson.version}</version>
</dependency>
<!-- Huawei提供的编解码接口,必须 -->
<!-- systemPath请替换成你本地的目录 \codecDemo\lib\com.huawei.m2m.cig.tup-1.3.1.jar -->
<dependency>
<groupId>com.huawei</groupId>
<artifactId>protocal-jar</artifactId>
<version>1.3.1</version>
<scope>system</scope>
<systemPath>${basedir}/lib/com.huawei.m2m.cig.tup-1.3.1.jar</systemPath>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 编码需要使用JDK1.8版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- OSGI规范打包配置 -->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>${felix.maven.plugin.version}</version>
<extensions>true</extensions>
<configuration>
<buildDirectory>./target</buildDirectory>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
<instructions>
<Bundle-RequiredExecutionEnvironment>J2SE-1.5</Bundle-RequiredExecutionEnvironment>
<Bundle-Activator></Bundle-Activator>
<Service-Component>OSGI-INF/*</Service-Component>
<!-- 请修改为你的编解码插件的名字,命名规范:设备类型-厂商ID-设备型号,例如:WaterMeter-Huawei-NBIoTDevice -->
<Bundle-SymbolicName>WaterMeter-Huawei-NBIoTDevice</Bundle-SymbolicName>
<Export-Package></Export-Package>
<Import-Package>
org.slf4j,
org.slf4j.spi,
org.apache.log4j.spi,
com.huawei.m2m.cig.tup.modules.protocol_adapter,
com.fasterxml.jackson.databind,
com.fasterxml.jackson.databind.node </Import-Package>
<!-- 除junit,slf4j-api,jackson-databind,protocal-jar, 其他所有的依赖包,必须把包对应的artifactId填入Embed-Dependency。artifactId之间以逗号分隔。 -->
<Embed-Dependency>
<!-- json-lib -->
</Embed-Dependency>
</instructions>
</configuration>
<executions>
<execution>
<id>generate-resource</id>
<goals>
<goal>manifest</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build></project>按照注释修改完成就ok了~!
修改maven配置文件:
在如图所示的位置:
<?xml version="1.0" encoding="UTF-8"?><scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="com.Huawei.NBIoTDevice.WaterMeter.ProtocolAdapterImpl"> <implementation class="com.Huawei.NBIoTDevice.WaterMeter.ProtocolAdapterImpl"/> <service> <provide interface="com.huawei.m2m.cig.tup.modules.protocol_adapter.IProtocolAdapter" /> </service></scr:component>
这里需要重点注意一下,第21条22条23条就是说的这个文件!
上面说的name也好class也好都是项目中ProtocolAdapterImpl.java文件的访问路径,这里还有一点需要注意,就是本项目的包名:
如上题所示我们的包名不是随便取的,必须是com.厂商名称.产品型号.设备类型
完成以上工作,就完成了编解码项目的所有配置工作,下一步就是找到程序被调用的入口及编写窍门了!!
共同學習,寫下你的評論
評論加載中...
作者其他優質文章






