LBAutoPackingShell 一个轻量级 iOS 快速自动打包工具。如果你需要更多的功能,详见帮助-h | --help

功能

  • 自动匹配最新的描述文件(Provisioning Profile)
  • 自动匹配签名身份(Code Signing Identity)
  • 支持--show-profile-detail provisionfile 查看授权文件类型、创建日期、过期日期、使用证书签名ID、使用证书的创建日期等
  • 允许指定授权文件目录,脚本将只在该目录匹配授权文件
  • 支持Xcode8.3.3以上
  • 支持ipa签名方式:development、app-store、enterprise,ad-hoc,即内部分发、商店分发、企业分发、企业内部分发
  • 支持workplace、cocoapod
  • 支持多工程协同项目使用-t targetName 指定构建target
  • 自动关闭BitCode,并可配置开关
  • 支持可选构建架构集合,默认构建”armv7 arm64”
  • 可配置自动修改内部版本号(Build Version)
  • 可配置修改接口生产环境和开发环境
  • 可配置指定新的Bundle Id
  • 可配置指定构建Debug、Release模式
  • 可指定构建的Architcture(arm64、armv7)
  • 自动格式化IPA名称,例如:
  1. MyApp_20170321_222303_开发环境_企业分发_2.1.0(67).ipa
  2. MyApp_20170321_222403_生产环境_商店分发_2.1.0(68).ipa
  • 自动校验ipa签名
  • 格式化日志输出

安装使用

  1. # 该脚本使用方法
  2. # step 1. 配置该脚本;
  3. # step 2. cd 该脚本目录,运行chmod +x AutoPackingShell.sh;
  4. # step 3. 终端运行 sh AutoPackingShell.sh;
  5. # step 4. 选择不同选项....
  6. # step 5. Success 🎉 🎉 🎉!

安装脚本所需工具

安装 Homebrew

  1. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

确保正确配置所有内容

  1. $ brew doctor

Xcode命令行工具

  1. $ xcode-select --install

安装 jq

在Shell命令行处理JSON数据

  1. brew install jq

安装 You-Get

You-Get是一个小型命令行实用程序,用于从Web下载媒体内容(视频,音频,图像),以防没有其他方便的方法。

  1. brew install you-get

安装 Blade

生成iOS应用程序图标Icon到Xcode图像目录

  1. brew tap jondot/tap
  2. brew install blade
  1. # blade --help 查看命令
  2. # -s Icon( *注意:1024*1024,无alph,png格式)
  3. # -t AppIcon.appiconset里的Contents.json文件
  4. # -o 输出路径 AppIcon.appiconset
  5. # -c 覆盖旧的Contents.json文件

安装xcpretty(可选)

用来格式化xcodebuild输出日志,建议安装

  1. sudo gem install xcpretty

OpenSSL版本

一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

  • 使用最新的openssl命令,方便研究SSL协议、数字证书。

如果你的openssl是 LibreSSL 查看Mac安装新版OpenSSL问题
更新前

  1. $ openssl version
  2. LibreSSL 2.2.7
  3. $ which openssl
  4. /usr/bin/openssl

更新后

  1. $ openssl version
  2. OpenSSL 1.0.2j 26 Sep 2016
  3. $ which openssl
  4. /usr/local/bin/openssl

如果更新之后还是没有显示正确的openssl,是因为系统存在两个openssl,可通过设置系统环境变量PATH来优先执行。

  1. echo 'export PATH="/usr/local/Cellar/openssl/1.0.2p/bin:$PATH"' >> ~/.bash_profile
  2. source ~/.bash_profile

或软连接

  1. ln -s /usr/local/Cellar/openssl/1.0.2p/bin/openssl /usr/local/bin

注意:/usr/local/Cellar/openssl/1.0.2p/bin/ 该路径请按照你实际情况来更改,通常是1.0.2p这个文件夹不同!

文件说明

user_config.plist

脚本全局参数配置文件
执行脚本前,需要在文件中配置的参数:

  1. - unlock_keychain_pwd:keychain解锁密码,即Mac开机密码。通常只有在第一次执行脚本时候需要。相当于脚本参数 -p | --keychain-password
  2. - channel:分发渠道,development 内部分发,app-store商店分发,enterprise企业分发, ad-hoc 企业内部分发
  3. - configration_type:构建模式:Debug/Release ;默认 Release。相当于脚本参数 -t | --configration-type
  4. - project_source_path:项目源码文件路径
  5. - project_name:项目名称
  6. - build_target:构建Target

常用IPA分发途径:
  1. - 内部测试(development):用于给我们内部人员测试使用的,指定的授权用户设备才可以安装
  2. - 商店分发(app-store):用于提交到商店审核,用户设备只能通过在App Store下载安装
  3. - 企业分发(enterprise):用于部署到服务器,所有用户设备都可通过扫描二维码或使用浏览器点击链接下载安装
  4. - 企业内部分发(ad-hoc):用于部署到服务器,授权用户设备才可以通过扫描二维码或使用浏览器点击链接下载安装

配置PHP运行环境

环境要求

  • PHP5.6
  • Apache2.4
  1. apachectl -v && php -v
  2. Server version: Apache/2.4.35 (Unix)
  3. Server built: Sep 24 2018 01:07:08
  4. PHP 5.6.38 (cli) (built: Sep 14 2018 22:31:05)
  5. Copyright (c) 1997-2016 The PHP Group
  6. Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Apache 2.4

浏览器中访问服务器 http://localhost:8080

关闭内置Apache,并删除所有自动加载脚本。

  1. $ sudo apachectl stop
  2. $ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

安装

  1. $ brew install httpd

Apache服务器自动启动

  1. $ sudo brew services start httpd

检查服务器已启动,如果Apache启动并运行,应该会看到一些httpd进程。

  1. $ ps -aef | grep httpd

查看Apache错误日志

  1. $ tail -f /usr/local/var/log/httpd/error_log

重启Apache常用命令

  1. #启动apache
  2. sudo apachectl start/restart
  3. #停止apache
  4. sudo apachectl stop
  5. #立即强制重启
  6. $ sudo apachectl -k restart

-k将立即强制重启,而不是在apache良好并准备就绪时重新启动

Apache配置

  1. 编辑Apache的配置文件/usr/local/etc/httpd/httpd.conf手动设置默认端口 Listen 8080Listen 80
  2. Apache默认根目录DocumentRoot "/usr/local/var/www"DocumentRoot /Users/your_user/Sites<Directory /Users/your_user/Sites>
  3. 更改AllowOverride NoneAllowOverride All
  4. 取消注释该行
  1. LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
  1. 用户和组(替换your_user 用你的真实用户名
  1. User your_user
  2. Group staff
  1. 服务器名称#ServerName www.example.com:8080替换为:ServerName localhost

测试Apache

Sites站点文件夹

  1. $ mkdir ~/Sites
  2. $ echo "<h1>My User Web Root</h1>" > ~/Sites/index.html

重启apache以确保配置更改生效,并浏览器访问:http://localhost:80

安装PHP5.6

由于Homebrew/phptap在2018年3月底被弃用
如果通过旧版Brew安装了PHP,则需要升级Homebrew清理设置

升级Homebrew清理设置

如果您通过Brew安装了现有的PHP,则需要先使用我们的升级Homebrew指南清理您的设置
更新 Homebrew

  1. # 获取最新的包的列表,首先得更新 Homebrew 自己
  2. brew update
  3. # 更新所有的包
  4. brew upgrade
  5. # 清理所有包的旧版本
  6. brew cleanup
  7. # 使用此命令搜索可用的PHP版本
  8. brew search php

检查当前安装的PHP包

  1. brew list | grep php

卸载php版本:

  1. $ brew uninstall --force php56 php56-apcu php56-opcache php56-xdebug php56-yaml
  2. $ brew uninstall --force php70 php70-apcu php70-opcache php70-xdebug php70-yaml
  3. $ brew cleanup

清除PHP的旧配置选项

  1. $ rm -Rf /usr/local/etc/php/*

PHP安装

  1. $ brew install php@5.6
  2. $ brew install php@7.0
  • PHP的配置-内存设置
  1. /usr/local/etc/php/5.6/php.ini
  2. date.timezone = PRC
  • 切换PHP版本
  1. $ brew unlink php@7.2 && brew link --force --overwrite php@5.6
  • 查看安装版本

强烈推荐:此时建议关闭所有终端选项卡和窗口。打开一个新的终端继续下一步。否则可能会出现一些非常奇怪的路径问题。。。

  1. php -v
  2. PHP 5.6.38 (cli) (built: Sep 14 2018 22:31:05)
  3. Copyright (c) 1997-2016 The PHP Group
  4. Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

配置Apache

/usr/local/etc/httpd/httpd.conf文件中

  1. LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
  2. # 在此一下添加以下内容
  3. LoadModule php5_module /usr/local/opt/php@5.6/lib/httpd/modules/libphp5.so
  4. #LoadModule php7_module /usr/local/opt/php@7.0/lib/httpd/modules/libphp7.so

此外,必须显式设置PHP的目录索引:

  1. <IfModule dir_module>
  2. DirectoryIndex index.html
  3. </IfModule>
  4. # 替换为:
  5. <IfModule dir_module>
  6. DirectoryIndex index.php index.html
  7. </IfModule>
  8. <FilesMatch \.php$>
  9. SetHandler application/x-httpd-php
  10. </FilesMatch>

验证PHP安装

Sites目录下创建一个info.php文件,将浏览器指向 http://localhost/info.php
如果看到phpinfo结果,恭喜!您现在已成功运行ApachePHP

安装PHP框架phalcon

php语言中高性能的mvc框架

  1. git clone git://github.com/phalcon/cphalcon.git
  2. cd cphalcon/build
  3. sudo ./install
  • 配置
  1. # 在php.ini 中添加
  2. extension=phalcon.so
  • 重启服务器sudo apachectl restart
  • 使用php -m|grep phalcon 命令,查看刚添加的phalcon扩展是否成功

注意:Mac系统自带php.ini/etc目录下默认没有,可以拷贝php.ini.defaultphp.ini配置。

配置Apache虚拟主机

httpd.conf 中这行前的注释符号#去掉

  1. Include /private/etc/apache2/extra/httpd-vhosts.conf

httpd-vhosts.conf 中添加:

  1. <VirtualHost *:80>
  2. DocumentRoot "/Users/liboy/Sites/apiapppack/webroot"
  3. ServerName iospack.com
  4. </VirtualHost>

/etc/hosts添加

  1. 127.0.0.1 iospack.com

常用路径记录

  1. # 系统自带apache
  2. /etc/apache2/httpd.conf
  3. /private/etc/apache2/extra/httpd-vhosts.conf
  4. # brew安装apache
  5. Include /usr/local/etc/httpd/extra/httpd-vhosts.conf
  6. /usr/local/etc/httpd/httpd.conf
  7. /usr/local/etc/httpd/extra/httpd-vhosts.conf
  1. mkdir -p ~/Library/LaunchAgents
  2. #加入开机自启
  3. cp /usr/local/opt/php@5.6/homebrew.mxcl.php@5.6.plist ~/Library/LaunchAgents/launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php56.plist
  1. 软连接:
  2. ln -s /usr/local/Cellar/php@5.6/5.6.38/bin/php /usr/local/bin/php
  3. ln -s /usr/local/Cellar/php@5.6/5.6.38/sbin/php-fpm /usr/local/sbin/php-fpm
  1. <VirtualHost *:80>
  2. ServerAdmin webmaster@xiaohua.com
  3. DocumentRoot "/Users/yournameDev/xiaohua.com"
  4. ServerName xiaohua.com
  5. ErrorLog "/Users/yourname/Dev/xiaohua.com/error_log"
  6. CustomLog "/Users/yourname/Dev/xiaohua.com/access_log" common
  7. <Directory "/Users/yourname/Dev/xiaohua.com">
  8. Options Indexes FollowSymLinks MultiViews
  9. AllowOverride None
  10. Require all granted
  11. </Directory>
  12. </VirtualHost>

签名相关命令

允许 codesign 访问您的钥匙串中的密钥

  1. security import /Users/xiaohe/Downloads/haina_dev.p12 -k ~/Library/Keychains/login.keychain -P 1 -T /usr/bin/codesign
  2. security import /tmp/tmp.cer -k ~/Library/Keychains/login.keychain -P p12password -T /usr/bin/codesign
  3. security import /tmp/tmp.cer -k ~/Library/Keychains/login.keychain -T /usr/bin/codesign
  4. security delete-certificate -c "iPhone Developer: Yumei Xing (9X7JK3J2YZ)" -t ~/Library/Keychains/login.keychain

mobileprovision文件中生成一个完整的plist文件

  1. security cms -D -i "/Users/liboy/Desktop/自动打包/LBAutoPackingShell/MobileProvision/xiaolundun_development.mobileprovision" > "/Users/liboy/Desktop/MobileProvision.plist"

以XML格式查看描述文件的命令:

  1. security cms -D -i "/Users/liboy/Desktop/自动打包/LBAutoPackingShell/MobileProvision/xiaolundun_development.mobileprovision"

开发者证书被包含在Provisioning Profile文件中DeveloperCertificates选项里面,所有的证书都是基于 Base64 编码符合 PEM (Privacy Enhanced Mail, RFC 1848) 格式的。

  1. security cms -D -i "/Users/liboy/Desktop/自动打包/LBAutoPackingShell/MobileProvision/xiaolundun_development.mobileprovision" | grep data | head -n 1 | sed 's/.*<data>//g' | sed 's/<\/data>.*//g'

提取DeveloperCertificates/<data></data> 之间的内容复制粘贴到一个文件中去,像下面这样:

  1. -----BEGIN CERTIFICATE-----
  2. MIIFnjCCBIagAwIBAgIIE/IgVItTuH4wDQYJKoZIhvcNAQEFBQAwgZYxCzA
  3. -----END CERTIFICATE-----`

然后使用 openssl x509 -text -in file.pem 来显示证书详细内容。

/Users/xiaohe/Desktop/LBAutoPackingShell/AutoPackingShell.sh —config-resource /Users/xiaohe/Sites/apiapppack/app/Logic/6e72ea4c9040cda10af4910d800ced50_2019042214382323.json 2019042214382323

参考

https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions
https://www.cnblogs.com/wangyang1213/p/5209119.html
代码签名探析

Mac升级bash到最新版本
https://blog.csdn.net/pz0605/article/details/51954868
https://www.cnblogs.com/litifeng/p/8448019.html

https://github.com/CocoaPods/CocoaPods/pull/6964

后台执行命令:&和nohup command & 以及关闭、查看后台任务
nohup和&后台运行,进程查看及终止
https://blog.csdn.net/dazhi_100/article/details/46806519