iOS批量自动打包和部署(Ⅱ):自动打包,并修改包名,给出完整脚本
时间: 2024-05-13 15:19:14 浏览: 190
好的,以下是一个自动打包并修改包名的完整脚本,支持多个项目打包和自动化部署:
```bash
#!/bin/bash
# 项目名称数组
project_names=("project1" "project2" "project3")
# 项目根目录数组
project_dirs=("/path/to/project1/" "/path/to/project2/" "/path/to/project3/")
# 打包输出目录数组
output_dirs=("/path/to/output1/" "/path/to/output2/" "/path/to/output3/")
# 修改包名数组
new_bundle_ids=("com.company.project1" "com.company.project2" "com.company.project3")
# 定义函数:打包并修改包名
function package_and_rename() {
# 参数1:项目名称
# 参数2:项目根目录
# 参数3:打包输出目录
# 参数4:新的包名
echo "==== 开始打包 $1 ===="
# 进入项目根目录
cd $2
# 清空旧的构建输出目录
rm -rf build
# 执行打包命令
xcodebuild -target $1 -configuration Release -sdk iphoneos build SYMROOT=$3
# 获取原始包名
old_bundle_id=$(defaults read $3/$1-Info CFBundleIdentifier)
echo "原始包名:$old_bundle_id"
# 修改包名
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $4" $3/$1-Info.plist
# 获取新的包名
new_bundle_id=$(defaults read $3/$1-Info CFBundleIdentifier)
echo "新的包名:$new_bundle_id"
# 重命名.ipa文件
mv $3/$1.ipa $3/$1-$new_bundle_id.ipa
echo "==== 打包 $1 完成 ===="
}
# 循环打包并修改包名
for ((i=0;i<${#project_names[@]};i++)); do
package_and_rename ${project_names[i]} ${project_dirs[i]} ${output_dirs[i]} ${new_bundle_ids[i]}
done
# 自动部署到指定服务器
echo "==== 开始自动部署 ===="
# 参数1:服务器地址
# 参数2:服务器用户名
# 参数3:服务器密码
# 参数4:应用名称
# 参数5:应用路径
function deploy_to_server() {
echo "==== 开始部署 $4 到 $2@$1:$5 ===="
scp -P 22 $4 $2@$1:$5
echo "==== 部署 $4 到 $2@$1:$5 完成 ===="
}
# 待部署的应用名称数组
app_names=("project1-com.company.project1.ipa" "project2-com.company.project2.ipa" "project3-com.company.project3.ipa")
# 待部署的应用路径数组
app_paths=("/var/www/html/project1/" "/var/www/html/project2/" "/var/www/html/project3/")
# 循环部署
for ((i=0;i<${#app_names[@]};i++)); do
deploy_to_server SERVER_ADDRESS USERNAME PASSWORD ${output_dirs[i]}${app_names[i]} ${app_paths[i]}
done
echo "==== 自动部署完成 ===="
```
使用方法:
1. 将以上脚本保存为一个文件,例如`auto_package_and_deploy.sh`。
2. 修改`project_names`、`project_dirs`、`output_dirs`和`new_bundle_ids`数组,分别对应项目名称、项目根目录、打包输出目录和新的包名。
3. 修改`deploy_to_server`函数中的`SERVER_ADDRESS`、`USERNAME`和`PASSWORD`,分别对应部署服务器的地址、用户名和密码。
4. 修改`app_names`和`app_paths`数组,分别对应待部署的应用名称和应用路径。
5. 在终端中执行以下命令:
```bash
$ sh auto_package_and_deploy.sh
```
6. 等待脚本执行完成即可。
阅读全文