1. 实现功能综述

1.1 功能概述

将使用HBuilder 开发的 5+App 项目,通过 jenkins 实现自动化构建ios,生成ipa。

1.2 功能流程图

image.png

2. 功能实现

为了更好的理解模板脚本( mkChange.py ) 修改的内容与构建流程,请先看一次 HBuilderX 官方文档

2.1 先决条件

  1. xxx.p12 证书
  2. 描述文件

双击 证书安装到打包机器,(安装时选系统
双击 描述文件在打包机器注册。(闪一下就完了)

2.2 环境说明

  • macOS 系统
  • 安装 xcode
  • macOS 已配置成为 jenkins的从节点,标签为: ios ,并且节点已连接。

2.3 jenkins 配置流程

注意: **jenkins 构建前 要清除项目的工作空间**

  1. 先拉取 ios-app-demo 配置模板文件
  2. 拉取H5项目代码到 ios-app-demo 目录下
  3. 执行 mkChange.py 修改项目模板
  4. 进入到 ios 工程目录: appDemo ,执行 build.sh 进行编译、打包、导出的操作

3. 常见问题与注意事项

  1. Q:打出的包启动后 白屏或闪退

A: 由于 H5项目中的 manifest.json 中有注释导致。 ios build 打包时,无法正确解析 manifest.json 文件,导致找不到app 启动入口。

  1. 打包时报错: library not found for -lstdc++

因为Xcode10彻底废弃了 libstdc++
解决方法:

  1. 远程build时报错如下: ```bash /usr/bin/codesign —force —sign 6BC623E560D3D8F42391278AE4031851DBC428E1 —preserve-metadata=identifier,entitlements,flags —timestamp=none /Users/admin/Desktop/zjjk/zjjk/zjjkapp/build/Release-iphoneos/zjjkapp.app/Frameworks/GOS.framework /Users/admin/Desktop/zjjk/zjjk/zjjkapp/build/Release-iphoneos/zjjkapp.app/Frameworks/GOS.framework: errSecInternalComponent Command /usr/bin/codesign failed with exit code 1

BUILD FAILED

The following build commands failed: CodeSign build/Release-iphoneos/zjjkapp.app/Frameworks/GOS.framework

  1. 解决办法:
  2. ```bash
  3. # Sierra中在Keychains下面是没有Login.keychain的,新的名字被改成了Login.keychain-db.所以需要做一个软连接
  4. [ ! -f ~/Library/Keychains/login.keychain-db ] && ln -s ~/Library/Keychains/login.keychain-db ~/Library/Keychains/login.keychain
  5. security unlock-keychain -p asb#1234 ~/Library/Keychains/Login.keychain

4. 参考文档

HBuilder 官方文档

5. 附:

5.1 jenkins 配置

jenkins build ios for H5+APP.pdf

5.1 ios-app-demo 代码

由于 ios SDK 文件过大,下面代码中已删除,请自行下载ios SDK 到第一层目录

iosAppDemo.7z