• iOS 开发环境。
  • 下载离线打包iOS版SDK()。
  • 从插件市场下载原生插件(付费插件不支持下载) 插件市场

下面我们学习一下 package.json 配置的每个节点的含义以及如何手动将插件集成到离线工程中并添加相关配置项;

完整的 package.json 配置文件格式如下(已移除离线集成插件不需要关心的节点),下面对每个节点如何在离线工程中配置进行说明

  1. "name": "插件名称",
  2. "id": "插件标识",
  3. "version": "插件版本号",
  4. "description": "插件描述信息",
  5. "_dp_type":"nativeplugin",
  6. "_dp_nativeplugin":{
  7. "ios": {
  8. "plugins": [
  9. {
  10. "type": "module|component, 插件类型",
  11. "name": "插件名称",
  12. }
  13. ],
  14. "hooksClass": "插件事件钩子注册类名",
  15. "frameworks": [
  16. "插件依赖的系统库(系统库有.framework和.tbd和.dylib类型)"
  17. ],
  18. "embedFrameworks": [
  19. "依赖的framework动态库"
  20. ],
  21. "插件要使用的资源文件列表,相对于ios目录的路径"
  22. ],
  23. "privacies": [
  24. "插件使用到的隐私列表,如NSPhotoLibraryUsageDescription"
  25. ],
  26. "parameters": {
  27. "插件需要配置的参数名称, 如appid": {
  28. "des": "参数描述信息",
  29. "key": "参数需要配置到infor.plist中的键名, 嵌套时使用:分割,如getui:appid"
  30. }
  31. }
  32. }
  33. }

plugins hooksClass

插件信息,及插件事件钩子注册类名,找到离线工程的 info.plist 文件右键选择 Open As -> Source Code 源码查看,添加如下节点信息,并根据 package.json 中配置的信息修改对应项的值 hooksClass、type、name、class

注:工程中只能包含一个dcloud_uniplugins节点,如果配置多个插件只需在dcloud_uniplugins节点下配置多个dict节点即可

frameworks

frameworks 为插件依赖的系统 framework 库,在工程的 Link Binary With Libraries 中点击下面的 + 号将插件所需的系统库添加进来即可

iOS 离线打包使用插件 - 图2

embedFrameworks

embedFrameworks 为插件依赖的动态 framework 库,需要以动态库的方式引入工程一定不要弄错,在工程的 Embed Frameworks 中点击下面的 + 号,在插件ios目录中将 embedFrameworks 中所配置的动态库添加进来

在弹窗中选择 Add Other 然后找到插件ios目录下面的动态 framework 库

其他 .a 静态库及 frameworks 静态库

除了 frameworks 节点及 embedFrameworks 节点中所配置的依赖库,在ios目录下面的其他 .a库文件 或 .framework库文件都为静态库,同样需要引入到工程中,同样在工程的 Link Binary With Libraries 中点击下面的 + 号将这些库也添加到工程

resources

resources 节点配置的是插件所需的资源文件,在工程的 Copy Bundle Resources 中点击下面的 + 号将插件所有资源文件添加到工程中

iOS 离线打包使用插件 - 图5

headers

headers 为插件所暴露的头文件,只需将这些文件直接拖入到工程中即可

privacies

privacies 为插件所需要到的系统权限,需要在 info.plist 中添加相应权限描述 如

parameters

parameters 中配置的信息也需要在 info.plist 中添加 举例:

“key”: “getui:appid”

info.plist 中添加

  1. <dict>
  2. <key>appid</key>
  3. <string>填写对应的appid</string>
  4. </dict>

从插件市场下载(以RichAlert为例)

iOS 离线打包使用插件 - 图8

这个插件配置信息比较简单只有 plugins 节点

在 info.plist 中添加 plugins 信息

  1. <key>dcloud_uniplugins</key>
  2. <array>
  3. <dict>
  4. <key>hooksClass</key>
  5. <string></string>
  6. <key>plugins</key>
  7. <array>
  8. <dict>
  9. <key>type</key>
  10. <string>module</string>
  11. <key>name</key>
  12. <string>DCloud-RichAlert</string>
  13. <key>class</key>
  14. <string>DCRichAlertModule</string>
  15. </dict>
  16. </array>
  17. </dict>

将ios目录下的.a库添加到工程中 [attach]32864[/attach]

至此本插件集成配置已完成

4.运行

示例工程 GitHub 地址: