├── README.md
├── AutoPackageScript
├── AdHocExportOptionsPlist.plist
├── AppStoreExportOptionsPlist.plist
├── DevelopmentExportOptionsPlist.plist
├── EnterpriseExportOptionsPlist.plist
├── README.md
└── autoPackageScript.sh
├── LICENSE
└── autoPackage.sh
/README.md:
--------------------------------------------------------------------------------
1 | # AutoPackageScript
2 | iOS、Android自动打包脚本文件
3 |
--------------------------------------------------------------------------------
/AutoPackageScript/AdHocExportOptionsPlist.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | method
6 | ad-hoc
7 |
8 |
9 |
--------------------------------------------------------------------------------
/AutoPackageScript/AppStoreExportOptionsPlist.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | method
6 | app-store
7 |
8 |
9 |
--------------------------------------------------------------------------------
/AutoPackageScript/DevelopmentExportOptionsPlist.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | method
6 | development
7 |
8 |
9 |
--------------------------------------------------------------------------------
/AutoPackageScript/EnterpriseExportOptionsPlist.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | method
6 | enterprise
7 |
8 |
9 |
--------------------------------------------------------------------------------
/AutoPackageScript/README.md:
--------------------------------------------------------------------------------
1 | # autoPackageScript
2 |
3 | ## Requirements
4 | * Xcode 8+
5 |
6 | ## Usage 使用方法
7 | #### step1 : 将autoPackageScript整个文件夹拖入到项目根目录
8 | #### step2 : 打开autoPackageScript.sh文件,修改 "自定义变量" 配置好项目参数
9 | #### step3 : 打开终端, cd到autoPackageScript文件夹
10 | #### step4 : 输入 sh autoPackageScript.sh 命令,回车,开始执行此打包脚本
11 |
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 guangqiang-liu
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/autoPackage.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # autoPackage.sh
4 | # CRM
5 | #
6 | # Created by 刘光强 on 2017/6/19.
7 | # Copyright © 2017年 Facebook. All rights reserved.
8 |
9 | # ******************** 安卓一键式打包并上传到fir生成二维码并直接扫描安装 ********************
10 |
11 | # 预先定义对应的环境变量
12 | envionmentVariables(){
13 |
14 | # 打包时间初始值
15 | SECONDS=0
16 | # 当前的路径
17 | pwd
18 | #安卓项目工程路径
19 | android_project_path=$(pwd)
20 | # 安卓apk目录路径
21 | apk_dir_path="$android_project_path/app/build/outputs/apk"
22 | # apk 路径
23 | apk_path="$apk_dir_path/app-dev-release.apk"
24 | # fir账户的token,这个token换成自己fir账号生成的token即可
25 | firim_token="1b91e3f54c6e6b106be7afdd13674a43"
26 | }
27 |
28 | apkBuild(){
29 |
30 | # 删除老的apk
31 | rm -rf $apk_path
32 | cd "$android_project_path"
33 | echo "\033[37;45m打包开始!!! 🎉 🎉 🎉 \033[0m"
34 | sleep 1
35 | # 执行安卓打包脚本
36 | ./gradlew assembleRelease
37 | # 检查apk文件(app-LSW-release.apk)是否存在
38 | if [ -f "$apk_path" ]; then
39 | echo "$apk_path"
40 | echo "\033[37;45m打包成功 🎉 🎉 🎉 \033[0m"
41 | sleep 1
42 | else
43 | echo "\033[37;45m没有找到对应的apk文件 😢 😢 😢 \033[0m"
44 | exit 1
45 | fi
46 | }
47 |
48 | # 预览apk信息
49 | previewIPAInfo(){
50 | echo "\033[37;43m************************* step4:预览apk信息 💩 💩 💩 ************************* \033[0m"
51 | fir info $apk_path
52 | sleep 1
53 | }
54 |
55 | # 将apk目录下的app-LSW-release.apk 上传到fir
56 | publishIPAToFir(){
57 |
58 | echo "\033[37;43m************************* step5:上传中 🚀 🚀 🚀 ************************* \033[0m"
59 | echo "\033[37;43m************************* step4:预览用户登录信息 💩 💩 💩 ************************* \033[0m"
60 | fir login "$firim_token"
61 | fir publish $apk_path -Q
62 | echo "\033[37;43m************************* step6:上传完成 🚀 🚀 🚀 ************************* \033[0m"
63 | # 输出总用时
64 | echo "\033[37;46m总用时: ${SECONDS}s 👄 👄 👄 \033[0m"
65 | open $apk_dir_path
66 | }
67 |
68 | envionmentVariables
69 | apkBuild
70 | previewIPAInfo
71 | publishIPAToFir
72 |
--------------------------------------------------------------------------------
/AutoPackageScript/autoPackageScript.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # autoPackageScript.sh
4 | # LSBuyer
5 | #
6 | # Created by 刘光强 on 2017/6/3.
7 | # Copyright © 2017年 Facebook. All rights reserved.
8 |
9 | envionmentVariables() {
10 |
11 | # ==================== 工程配置环境变量 ==================== #
12 |
13 | echo "\033[37;45m************************* step1:初始化环境变量 🚀 🚀 🚀 ************************* \033[0m"
14 |
15 | sleep 0.5
16 | # 计时
17 | SECONDS=0
18 | # 工作空间 (例:若是用Cocopods管理的.xcworkspace项目,赋值true;用Xcode默认创建的.xcodeproj,赋值false)
19 | is_workspace="false"
20 | # 指定要打包编译的方式 : Release or Debug (默认是Release)
21 | build_configuration="Release"
22 | # fir账户的token, 这个token换成自己fir账号生成的token即可
23 | firim_token="1b91e3f54c6e6b106be7afdd13674a43"
24 |
25 | # 打包脚本文件夹路径
26 | script_path=$(pwd)
27 | # 指定项目的scheme名称(默认为one,需要再次赋值)
28 | scheme_name="one"
29 | # 工程中Target对应的配置plist文件名称, Xcode默认的配置文件为info.plist (需要再次赋值)
30 | info_plist_name="info"
31 | # 导出ipa所需要的对应的plist文件路径 (默认为EnterpriseExportOptionsPlist.plist)
32 | ExportOptionsPlistPath="$script_path/EnterpriseExportOptionsPlist.plist"
33 |
34 | # 返回上上级目录,进入项目工程根目录
35 | cd ..
36 | cd ..
37 | # 工程根目录
38 | project_dir=$(pwd)
39 | # 获取工程名称(LSBuyer)
40 | project_name=`find . -name *.xcodeproj | awk -F "[/.]" '{print $(NF-1)}'`
41 |
42 | # Dev,Pre,Pro三种环境
43 | echo "\033[31;1m请选择打包类型(输入序号,按回车即可) \033[0m"
44 | echo "\033[31;1m1. 测试 \033[0m"
45 | echo "\033[31;1m2. 预发 \033[0m"
46 | echo "\033[31;1m3. 生产 \033[0m"
47 |
48 | # 捕获用户键盘输入
49 | read packageType
50 | sleep 0.5
51 | method="$packageType"
52 |
53 | # 判断用户是否有输入
54 | if [ -n "$method" ] ; then
55 | if [ "$method" = "1" ] ; then
56 | ExportOptionsPlistPath="$script_path/EnterpriseExportOptionsPlist.plist"
57 | # 根据用户选择的打包类型来设置对应的scheme和plist文件
58 | scheme_name="one"
59 | info_plist_name="info"
60 | elif [ "$method" = "2" ] ; then
61 | ExportOptionsPlistPath="$script_path/EnterpriseExportOptionsPlist.plist"
62 | scheme_name="LSBuyerPre"
63 | info_plist_name="LSBuyerPre"
64 | elif [ "$method" = "3" ] ; then
65 | ExportOptionsPlistPath="$script_path/AppStoreExportOptionsPlist.plist"
66 | scheme_name="LSBuyer"
67 | info_plist_name="Info"
68 | else
69 | echo "\033[37;45m************************* 你是不是瞎,是不是瞎 😢 😢 😢 ************************* \033[0m"
70 | exit 1
71 | fi
72 | fi
73 |
74 | # 获取对应的plist文件
75 | info_plist_path="$project_dir/$project_name/$info_plist_name.plist"
76 |
77 | # 对应plist中的Bundle versions string, short
78 | bundle_short_version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$info_plist_path"`
79 | # 对应plist中的Bundle version
80 | bundle_version=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$info_plist_path"`
81 |
82 | # 指定输出ipa文件夹路径 (需要再次赋值)
83 | export_path=~/Desktop/$scheme_name-IPA
84 | # 指定输出xcarchive路径
85 | export_archive_path="$export_path/$scheme_name.xcarchive"
86 | # 删除旧.xcarchive文件
87 | rm -rf "$export_archive_path"
88 |
89 | # 指定输出ipa路径
90 | export_ipa_path="$export_path"
91 | # 指定输出ipa名称 : scheme_name + bundle_short_version (需要重新赋值)
92 | ipa_name="$scheme_name-v$bundle_short_version"
93 |
94 | }
95 |
96 | Xcodebuild() {
97 |
98 | echo "\033[37;45m************************* step2:开始构建项目 🚀 🚀 🚀 ************************* \033[0m"
99 | sleep 1
100 | if [ -d "$export_path" ]; then
101 | echo $export_path
102 | else
103 | mkdir $export_path
104 | fi
105 |
106 | # 判断编译的项目类型是workspace还是project
107 | if $is_workspace ; then
108 | # 编译前做clear操作
109 | xcodebuild clean -workspace ${project_name}.xcworkspace \
110 | -scheme ${scheme_name} \
111 | -configuration ${build_configuration}
112 | # archive操作
113 | xcodebuild archive -workspace ${project_name}.xcworkspace \
114 | -scheme ${scheme_name} \
115 | -configuration ${build_configuration} \
116 | -archivePath ${export_archive_path}
117 | else
118 | xcodebuild clean -project ${project_name}.xcodeproj \
119 | -scheme ${scheme_name} \
120 | -configuration ${build_configuration}
121 |
122 | xcodebuild archive -project ${project_name}.xcodeproj \
123 | -scheme ${scheme_name} \
124 | -configuration ${build_configuration} \
125 | -archivePath ${export_archive_path}
126 | fi
127 |
128 | # 检查是否构建成功
129 | # xcarchive 是一个文件夹不是一个文件所以使用 -d 判断
130 | if [ -d "$export_archive_path" ] ; then
131 | echo "\033[37;45m项目构建成功 🚀 🚀 🚀 \033[0m"
132 | else
133 | echo "\033[37;45m项目构建失败 😢 😢 😢 \033[0m"
134 | exit 1
135 | fi
136 |
137 | }
138 |
139 | ExportArchive() {
140 | echo "\033[37;43m************************* step3:开始导出ipa文件 🚀 🚀 🚀 ************************* \033[0m"
141 | sleep 0.5
142 | # 导出ipa
143 | xcodebuild -exportArchive \
144 | -archivePath ${export_archive_path} \
145 | -exportPath ${export_ipa_path} \
146 | -exportOptionsPlist ${ExportOptionsPlistPath}
147 |
148 | # 修改ipa文件名称
149 | mv $export_ipa_path/$scheme_name.ipa $export_ipa_path/$ipa_name.ipa
150 | # 检查文件是否存在
151 | if [ -f "$export_ipa_path/$ipa_name.ipa" ] ; then
152 | echo "\033[37;45m导出 ${ipa_name}.ipa 包成功 🎉 🎉 🎉 \033[0m"
153 | else
154 | echo "\033[37;45m导出 ${ipa_name}.ipa 包失败 😢 😢 😢 \033[0m"
155 | exit 1
156 | fi
157 | # 输出打包总用时
158 | echo "\033[37;46m总用时: ${SECONDS}s \033[0m"
159 | open $export_path
160 |
161 | }
162 |
163 | previewIPAInfo() {
164 | echo "\033[37;43m************************* step4:预览IPA信息 💩 💩 💩 ************************* \033[0m"
165 | fir info $export_ipa_path/$ipa_name.ipa
166 |
167 | }
168 |
169 | publishIPAToFir() {
170 | echo "\033[37;43m************************* step5:上传中 🚀 🚀 🚀 ************************* \033[0m"
171 | echo "\033[37;43m************************* step4:预览用户登录信息 💩 💩 💩 ************************* \033[0m"
172 | fir login "$firim_token"
173 | fir publish $export_ipa_path/$ipa_name.ipa -Q
174 | echo "\033[37;43m************************* step6:上传完成 🚀 🚀 🚀 ************************* \033[0m"
175 | # 输出总用时
176 | echo "\033[37;46m总用时: ${SECONDS}s 👄 👄 👄 \033[0m"
177 | open $export_path
178 |
179 | }
180 |
181 | envionmentVariables
182 | Xcodebuild
183 | ExportArchive
184 | previewIPAInfo
185 | publishIPAToFir
186 |
--------------------------------------------------------------------------------