原生插件包的最外层目录必须为该原生插件的原生插件名,如moduleDemo,然后使用zip压缩工具将该目录压缩成zip格式文件。如下图:
【**】如果原生插件包不符合该规范,将导致该原生插件不被编译。
iOS原生插件包内部最多只能包含以下几项,其中target和module.json为必需的,res、framework、localization目录可选,大致如图:
该目录为必需目录。
1)、该目录存放原生插件库(也可以是如.swift这种源文件)及原生插件用到的其它第三方.a静态库、静态framework库,以及资源文件等。要检查静态framework和bundle文件里面是否有Info.plist文件,如果有,需要删掉,否则将导致应用上传不了AppStore。
2)、该目录允许包含子目录,但不能包含widget、uz、UZEngine、UZModules等目录,也不能包含en.lproj、zh-Hans.lproj等多语言包目录。多语言包可以放置在localization目录下。
3)、该目录下不能包含引擎库libUZEngine.a和Info.plist文件。
该目录为可选目录,该目录命名规范必须为“res_”开头,后面跟原生插件名。例如“res_moduleDemo”。
该目录为可选目录,该目录下存放动态类型的framework库,注意动态类型的framework库里面的Info.plist文件不能删掉,并且framework库不能包含模拟器架构。
所有的.a静态库和framework库必须包含armv7、arm64架构,否则将导致编译失败或无法正常使用。对于比较大的库,不能包含模拟器i386、x86_64架构,armv7s架构由于在云编译时使用不到也需要移除,否则库文件过大,会影响编译效率。
可以在mac终端里面使用lipo -info test.a的方式查看库包含哪些架构。
该文件的结构为一个或者多个JSON对象,每个对象代表一个原生插件(平台允许一个原生插件包中同时存放多个原生插件的),如: 一个对象时的module.json配置:
{
"name":"moduleDemo",
"class":"UZModuleDemo",
"methods":["method1", "method2"]
}
多个对象时的module.json配置,对象与对象之间以逗号隔开:
{
"name":"moduleDemo1",
"class":"UZModuleDemo1",
"methods":["method1", "method2"]
},
{
"name":"moduleDemo2",
"class":"UZModuleDemo2",
"methods":["method1", "method2"]
}
同时需要检查一下module.json配置中,所有的字符是否均是半角的字符。
凡是不符合以上格式的,均须开发者做更改。