手机远程控制Mac实现iOS APP一键打包上传

听起来有点ridiculous哈~

不谈业务场景,就说说功能实现~

需要解决两个问题:

  • 手机怎么就能控制电脑(这里指的Mac)
  • 怎么打包并上传

问题一:手机控制Mac电脑

AppleScript

有好多办法是可以控制电脑执行一定的操作,这里先用邮件举个栗子……

Mac自带的邮件可以触发一定的操作,可以预定义一个脚本,通过接受到的邮件,触发预定义的脚本。这里的脚本只支持AppleScriptAppleScript是个什么鬼?

AppleScript.png

面熟吧,就是不咋用,在里面敲个命令

tell application "System Events" to sleep

执行一下,屏幕黑了吧!

邮件触发脚本

在接收到邮件的时候,可以设定一个动作,比如就要出发上面的一个脚本,我们可以先保存好这个脚本,一会儿用到。先看看邮件偏好设置,如何设置,见下图:

邮件设置.png

几个设置比较容易看懂,收到邮件满足条件则运行AppleScript,后面的package,就是刚才保存的脚本。脚本需要添加的一定的位置才可以被执行,点击package一行的时候会让你在 Finder 中显示如下:

脚本存放位置.png

放到这个 com.apple.mail 文件夹下!好了,试着按照自己设定的规则 发个邮件试试,看看脚本会不会执行。

问题二:打包与上传的脚本

如果执行了,那666。往后的动作应该不陌生了,搞过持续集成的应该对打包上传的脚本不陌生了,一键无痛打包,想必你干过;没做过的也无妨,脚本拿去不谢。最基本的流程如下:

打包流程.png

代码获取

这个就不说了,相信git或者svn的命令你比我熟多了,扔进脚本里就好。

如果是 cocoapods 管理的项目,一般会加上

#更新组件
pod update --no-repo-update

Archive + Export

都是用的xcodebuild命令,具体怎么写看下面的。

上传

Linux 命令上传,具体写法看服务器定义,我找了个蒲公英的上传样式。

打包脚本的编写,声明一下啊:

真正有用的命令只有两行,其中需要处理的东西比较多,
大神们写的都很多,包括一些容错。
我只写了最基本可以快速使用的部分
如果需要更多的使用方式,稍后找到链接会给大家贴上去

给大神博客打个广告,参考如下:
Jenkins+github+fir持续集成iOS项目

创建一个文件 touch shell, 粘贴如下代码并保存(当项目通过.xcodeproj打开的)

#!/bin/sh -
export LANG=en_US.UTF-8

# 工程名,你项目叫啥名字
APP_NAME="Package"

# TARGET名称,需要打包的TARGET
TARGET_NAME="Package"

# 工程根目录
CODE_PATH=".xcodeproj 所在的目录"

# 证书
# 证书名字的获取后面说
CODE_SIGN_DISTRIBUTION="iPhone Distribution: Zuiye Company Limited"

# archive路径、导出的ipa路径、需要的ExportOptions.plist路径可以随便定义,路径里包含有之前定义的变量的时候,写法如下:
# "${路径变量名}/${APP名}.ipa"


# 删除工程文件
echo "+++++++++删除工程文件+++++++++"
rm -rf "${baseDirForScriptSelf}/${TARGET_NAME}.xcarchive"
rm -rf "${baseDirForScriptSelf}/DistributionSummary.plist"
rm -rf "${baseDirForScriptSelf}/${TARGET_NAME}.ipa"
rm -rf "${baseDirForScriptSelf}/Packaging.log"

# 进入工程源码根目录
cd "${CODE_PATH}"

# 清除工程
echo "=================clean================="
xcodebuild -project "${APP_NAME}.xcodeproj" -scheme "${TARGET_NAME}" -configuration 'Release' clean

#将app打包成xcarchive格式文件(PROVISIONING_PROFILE后面是你配置的证书对应的描述文件UUID,获取方式后面谈到)
echo "+++++++++++++++++archive+++++++++++++++++"
xcodebuild archive -project "${APP_NAME}.xcodeproj" -scheme "${TARGET_NAME}" -archivePath "${TARGET_NAME}.xcarchive" -configuration 'Release' PROVISIONING_PROFILE='后面讲述怎么获取' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}"

# 将xcarchive格式文件打包成ipa
echo "+++++++++++++++++ipa+++++++++++++++++"
xcodebuild -exportArchive -archivePath "${CODE_PATH}/${TARGET_NAME}.xcarchive" -exportPath "${CODE_PATH}" -exportOptionsPlist "${CODE_PATH}/ExportOptions.plist"

# 上传蒲公英
echo "=================开始上传================="
curl -F 'file=@'${CODE_PATH}/${APP_NAME}.ipa'' -F '_api_key= 自己蒲公英帐户的_api_key' https://www.pgyer.com/apiv2/app/upload

如果项目是.xcworkspace打开的,需要修改 cleanxcarchive处如下

# 清除工程
echo "=================clean================="
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${TARGET_NAME}" -configuration 'Release' clean

#将app打包成xcarchive格式文件(PROVISIONING_PROFILE后面是你配置的证书对应的描述文件UUID,获取方式后面谈到)
echo "+++++++++++++++++archive+++++++++++++++++"
xcodebuild archive -workspace "${APP_NAME}.xcworkspace" -scheme "${TARGET_NAME}" -archivePath "${TARGET_NAME}.xcarchive" -configuration 'Release' PROVISIONING_PROFILE='后面讲述怎么获取' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}"

保存完成后只是一个普通的文本文件,转换成可执行程序需要通过 chmod 命令给权限

chmod +x  给权限
chmod -x 去除执行权限

在脚本目录下执行

chmod +x shell

得到可执行文件如下:

shell.png

有三个参数需要获取 PROVISIONING_PROFILECODE_SIGN_DISTRIBUTIONexportOptionsPlist

PROVISIONING_PROFILE获取

比如你项目已经配置好了,也可以打包,那么找到 .xcodeproj --> 显示包内容-> 打开project.pbxproj(双击)--> 搜索下PROVISIONING_PROFILE 就看到了。可能是一串长的字符串,也可能是你描述文件的文件名。

CODE_SIGN_DISTRIBUTION获取

打开钥匙串,找到根证书,查看下详情,有个类似于 iPhone Distribution: Zuiye Company Limited 这样的名字,有的后面还会有个小括号,都需要复制过来。

exportOptionsPlist获取

可以自己写,但是有个最好的方式就是先用xcode打包一次,然后就看到这个ExportOptions.plist 了,跟 ipa 文件在一起。


现在能控制电脑了,打包脚本也可以自动打包上传了,然后把两件事情合并到一起,就是在邮件执行的那个脚本里调用以下这个打包脚本,如下:

do shell script "打包脚本的路径"

给你的Mac电脑发了个邮件,然后电脑执行打包脚本并上传APP,没完事呢,缺啥呢?缺了个通知,我不知道有没有发布成功啊。不要着急,可以让服务器给你发消息。以蒲公英为例,发布成功一个APP,微信公众号可以收到消息,如下:

消息通知.png

然后呢,接着开小差,再爬他个五百个台阶~

还有,脚本后面加个关机的命令,不干活就让电脑休息吧~

还有,给电脑开个用户,就干这个事,因为电脑里太乱了,不想别人看到~

还有,今天大腿有点拉伤了,一字马没下到底。手还能动,熬夜写了这篇小破文章~

困了,明天再校对吧~

感谢您阅读完毕,如有疑问,欢迎添加QQ:714387953(蜗牛上高速)。
github:https://github.com/yhl714387953/Package
如果有错误,欢迎指正,一起切磋,共同进步
如果喜欢可以Follow、Star、Fork,都是给我最大的鼓励

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容