构建
1.1、构建的必备条件
1.2、通过Xcode构建

通过Xcode进行构建是手动构建。对于个人开发者和小型团队来说,这种构建方法是比较方便的。

1.3、自动化构建

对于需要进行持续集成的时候,自动化构建是不可避免的。

1.3.1、使用xcodebuild进行构建

1、准备材料:

2、通过security命令解锁login这个KeyChain

security unlock-keychain ~/Library/Keychains/login.keychain

3、通过security命令将p12文件导入到login这个KeyChain中:

security import xx.p12 -k ~/Library/Keychains/login.keychain -p PASSWORD -T /usr/bin/codesign

注:p12文件是用密码保护的,上面的-p参数就是p12文件的密码。

4、通过security命令解析mobileprovision文件到一个新的文件中:

security cms -D -i xx.mobileprovision > tmp.xml 2> /dev/null

5、通过PlistBuddy命令获得mobileprovision文件UUID

/usr/libexec/PlistBuddy -c "print UUID" tmp.xml

6、把mobileprovision文件复制到指定的目录下:

cp xx.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/${uuid}.mobileprovision

7、通过opensslp12文件中获取证书的签名:

openssl pkcs12 -in xx.p12 -passin pass:"$P12_PASSWORD" -nodes | grep "friendlyName: iPhone

8、通过xcodebuild编译:

xcodebuild \
    -workspace $workspaceName \
    -scheme $projectName \
    -configuration $CONFIGURATION \
    -sdk $SDK \
    -archivePath ${archivePath} \
    CODE_SIGN_STYLE=Manual \
    CODE_SIGN_IDENTITY="${codeSignIdentity}" \
    PROVISIONING_PROFILE="${uuid}" \
    CONFIGURATION_BUILD_DIR="${buildPath}" \
    VALID_ARCHS="arm64 armv7 armv7s"
    clean archive

9、通过xcodebuild封包:

xcodebuild -exportArchive -archivePath $archivePath -exportOptionsPlistxx.plist -exportPath ${buildPath}

上面整个过程我已经写成了Shell脚本,下载即可使用:

curl -LO https://raw.githubusercontent.com/leleliu008/auto/master/ios/tool.sh
1.3.2、使用xctool进行构建
1.3.3、使用fastlane进行构建