linux怎么编译ipa,shell技巧1 - 生成ipa文件

1、前言

iTunes 12.7 之前,可以下载ipa应用包、打开ipa包,也生成ipa文件!但是在这12.7之后,关于ipa的所有功能已经移除,如果还想下载ipa包,可以参考我之前的文章:解决 iTunes 12.7 无法下载 AppStore应用的IPA包问题,今天我们主要来说说制作ipa文件的功能。

8214fdade670

20180831-iTunes12.7-new-change.png

8214fdade670

20180831-iTunes12.7.png

2、ipa文件结构

其实ipa文件可以理解为一个zip的压缩文件,所以解压ipa文件后,得到ipa的目录 ipafilename/Payload/xxx.app,以微信示例:

8214fdade670

20180831-ipa-file-path.png

所以,如果我们编译的项目,想生成ipa文件,以前是拖拽到iTunes就会自动生成ipa文件,现在不行了,根据这个原理,我们在Xcode中编译生成的.app目录,按照前面说的目录结构,进行压缩就行啦!

3、bash脚本

生成.app目录内容:

8214fdade670

20180831-Xcode-build-app.png

执行shell脚本生成ipa文件:

8214fdade670

20180831-bash-make-ipa-file.png

生成成功后,自动打开ipa文件所在目录:

8214fdade670

20180831-make-ipa-finish.png

4、全部代码

具体的代码,可参考我的Github代码:

#!/bin/bash

# 定义用到的变量

projectAppPath=""

outputPath=""

ipaFileName=""

# 定义读取输入字符的函数

getProjectAppPath() {

# 输出换行,方便查看

echo "\n================================================"

# 监听输入并且赋值给变量

read -p " Enter .app path: " projectAppPath

# 如果为空值,从新监听

if test -z "$projectAppPath"; then

getprojectAppPath

fi

}

getOutputPath() {

# 输出换行,方便查看

echo "\n================================================"

# 监听输入并且赋值给变量

read -p " Enter output path: " outputPath

if test -z "$outputPath"; then

# 如果没有输出路径,默认输出到桌面

outputPath="Desktop"

fi

}

getipaFileName() {

# 输出换行,方便查看

echo "\n================================================"

# 监听输入并且赋值给变量

read -p " Enter ipa FileName: " ipaFileName

if test -z "$ipaFileName"; then

getipaFileName

fi

}

# 执行函数,给变量赋值

getProjectAppPath

getOutputPath

getipaFileName

# 切换到当前用户的home目录,方便创建桌面目录

cd ~

# 在输出路径下创建 Payload 文件夹

mkdir -p "${outputPath}/Payload"

# 将.app 文件复制到 输出路径的 Payload 文件夹下

cp -r "${projectAppPath}" "${outputPath}/Payload/"

# 切换到输出路径

cd "${outputPath}"

# 将 Payload 文件夹压缩成 ipa 包

zip -r "${ipaFileName}.ipa" Payload

# 删除当前路径下 Payload 文件夹【-r 就是向下递归,不管有多少级目录,一并删除 -f 就是直接强行删除,不作任何提示的意思】

rm -rf "Payload"

# 成功提示

echo "\n\n=====================【转换ipa完成】=========================\n"

echo ${outputPath}

## 打开输出的路径

#open -a Finder "${outputPath}"

# 从当前位置打开finder

open .

# 结束退出

exit 0

5、优化

方法一

每次想生成ipa文件,就要打开终端,执行 sh make_ipa_file.sh,相当麻烦,所以,如果生成别名,直接在终端输入别名就可以执行啦,是不是很棒!

为.bash_profile添加了一个别名:

mkipa='sh /Users/HTC/Documents/iBash/make_ipa_file.sh'

以后直接在终端输入:mkipa就可以啦,这不是很棒!!!

方法二

如果是 Unix 可执行文件,直接点击,会自动打开终端执行。

把 make_ipa_file.sh 改为 make_ipa_file_sh 名字,然后在终端为文件添加可执行权限:

chmod +x /Users/HTC/Desktop/make_ipa_file_sh

这样就生成了 Unix 文件,双击就会打开到终端:

8214fdade670

20180831-make-ipa-Unix-file.png

方法三

在 ~/.bashrc 里面添加本函数,或添加脚本路径,也可以方便执行。

方法四

如果是macOS环境,还可以通过苹果的apple脚本服务,来做到一键化,以后有机会在谈谈。

6、总结

通过这个简单又复杂的示例,其实使用脚本的最终目录,也是想提高效率!!所以,打包ipa包的效率,也是向着这样的方向努力!如果你对shell还不熟悉,可以看看下面这2个教程,当前我学习的时候,还没有人给指导,所以,你们是幸福的一代程序员!加油!

参考

如有疑问,欢迎在评论区一起讨论!

如有不正确的地方,欢迎指导!

注:本文首发于 iHTCboy's blog,如若转载,请注来源

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值