安装fastlane 至于fastlane是做什么的就不多说了,自行百度;
sudo gem install fastlane --verbose
安装成功后没有修改gem source 的修改一下,我用的是https://gems.ruby-china.com/ 终端打开项目目录执行fastlane init, fastlane init执行过程中需要选择一些东西,如What would you like to use fastlane for? 并把Gemfile中的source修改成你的gem source的源,
wk@wakedatadeMacBook-Pro uniapp-yuexiuhui-iOS % fastlane init[?] ?? [?] Looking for iOS and Android projects in current directory...[15:40:54]: Created new folder './fastlane'.[15:40:54]: Detected an iOS/macOS project in the current directory: 'uniapp-yuexiuhui-iOS.xcworkspace'[15:40:55]: -----------------------------[15:40:55]: --- Welcome to fastlane ?? ---[15:40:55]: -----------------------------[15:40:55]: fastlane can help you with all kinds of automation for your mobile app[15:40:55]: We recommend automating one task first, and then gradually automating more over time[15:40:55]: What would you like to use fastlane for?/usr/local/Cellar/fastlane/2.168.0/libexec/gems/highline-1.7.10/lib/highline.rb:624: warning: Using the last argument as keyword parameters is deprecated1. ?? Automate screenshots2. ????? Automate beta distribution to TestFlight3. ?? Automate App Store distribution4. ?? Manual setup - manually setup your project to automate your tasks? 这个地方输入你要上传到那个平台,一般选2、3、4
wk@wakedatadeMacBook-Pro uniapp-yuexiuhui-iOS % fastlane init
[?] ??
[?] Looking for iOS and Android projects in current directory...
[15:40:54]: Created new folder './fastlane'.
[15:40:54]: Detected an iOS/macOS project in the current directory: 'uniapp-yuexiuhui-iOS.xcworkspace'
[15:40:55]: -----------------------------
[15:40:55]: --- Welcome to fastlane ?? ---
[15:40:55]: fastlane can help you with all kinds of automation for your mobile app
[15:40:55]: We recommend automating one task first, and then gradually automating more over time
[15:40:55]: What would you like to use fastlane for?
/usr/local/Cellar/fastlane/2.168.0/libexec/gems/highline-1.7.10/lib/highline.rb:624: warning: Using the last argument as keyword parameters is deprecated
1. ?? Automate screenshots
2. ????? Automate beta distribution to TestFlight
3. ?? Automate App Store distribution
4. ?? Manual setup - manually setup your project to automate your tasks
? 这个地方输入你要上传到那个平台,一般选2、3、4
下一步需要提醒你输入的是你的iOS开发者账号
[15:44:09]: To use App Store Connect and Apple Developer Portal features as part of fastlane,[15:44:09]: we will ask you for your Apple ID username and password[15:44:09]: This is necessary for certain fastlane features, for example:[15:44:09]: [15:44:09]: - Create and manage your provisioning profiles on the Developer Portal[15:44:09]: - Upload and manage TestFlight and App Store builds on App Store Connect[15:44:09]: - Manage your App Store Connect app metadata and screenshots[15:44:09]: [15:44:09]: Your Apple ID credentials will only be stored in your Keychain, on your local machine[15:44:09]: For more information, check out[15:44:09]: https://github.com/fastlane/fastlane/tree/master/credentials_manager[15:44:09]: [15:44:09]: Please enter your Apple ID developer credentials/usr/local/Cellar/fastlane/2.168.0/libexec/gems/highline-1.7.10/lib/highline.rb:624: warning: Using the last argument as keyword parameters is deprecated[15:44:09]: Apple ID Username:
[15:44:09]: To use App Store Connect and Apple Developer Portal features as part of fastlane,
[15:44:09]: we will ask you for your Apple ID username and password
[15:44:09]: This is necessary for certain fastlane features, for example:
[15:44:09]:
[15:44:09]: - Create and manage your provisioning profiles on the Developer Portal
[15:44:09]: - Upload and manage TestFlight and App Store builds on App Store Connect
[15:44:09]: - Manage your App Store Connect app metadata and screenshots
[15:44:09]: Your Apple ID credentials will only be stored in your Keychain, on your local machine
[15:44:09]: For more information, check out
[15:44:09]: https://github.com/fastlane/fastlane/tree/master/credentials_manager
[15:44:09]: Please enter your Apple ID developer credentials
[15:44:09]: Apple ID Username:
然后是iOS开发者账号的密码,如果你的账号下面有多个企业或组织,然后是选择证书然后就配置完了。 然后在你的项目目录中会多一个fastlane文件夹,一个Gemfile,Gemfile中需要修改source就可以了。fastlane中有两个文件,一个Appfile一个Fastfile,Appfile保存的是iOS开发者账号的信息和证书信息,Fastfile中是自动打包的脚本,对应纯原生的代码这样基本就可以了; 而对于现在混口开发盛行的时代,我们项目基本都是uni-app写的所以才需要再写一些脚本,开发就是越来越懒,一步也不喜欢手动去做,那么脚本的用处就大了;
#!/bin/bashenv=$1buildUpdateDescription=$2ipa_name="项目名"api_key="蒲公英的api_key"if [ ! -n "$1" ] ;then env="build"fi# 向iOS的Info.plist里面写值# environment="production"# if [[ $env = "dev" ]]; then# environment="development"# fi# path=$(cd `dirname $0`; pwd)# target_plist="$path/uniapp-yuexiuhui-iOS/Info.plist"# echo $target_plist# for plist in "$target_plist"; do# if [[ -f "$plist" ]]; then# /usr/libexec/PlistBuddy -c "Set :Environment $environment" "$plist"# fi# done# 修改YXHCommon.m文件,这个的目的主要是切换生产环境与测试环境的,修改的值主要用于条件编译cd uniapp-yuexiuhui-iOS/utilsif [[ "dev" = $env ]]; then sed -i '' 's/#if false/#if true/g' YXHCommon.melse sed -i '' 's/#if true/#if false/g' YXHCommon.mficd ../..cd ../uniapp-yuexiuhui-vue# 而下面的npm run xxx这个主要是HbuilderX 打包脚本if [ "dev" = $env ]then npm run dev:app-pluselse npm run build:app-plusfiecho '------覆盖www------'cp -R dist/$env/app-plus/ ../$ipa_name/$ipa_name/Pandora/apps/__UNI__E59AA60/wwwcd ../uniapp-yuexiuhui-iOSfastlane pgycd ./buildexport_ipa_path=$(cd `dirname $0`; pwd)#上传ipa到蒲公英 我自己加的if [ -f "${export_ipa_path}/${ipa_name}.ipa" ]then echo '开始上传ipa/apk到蒲公英' result=$(curl -F "file=@${export_ipa_path}/${ipa_name}.ipa" -F "_api_key=${api_key}" -F "buildUpdateDescription=${buildUpdateDescription}" 'http://www.pgyer.com/apiv2/app/upload')else echo "在目录:${export_ipa_path}/${ipa_name}.ipa 不存在"fiecho '上传到蒲公英成功'exit 0
#!/bin/bash
env=$1
buildUpdateDescription=$2
ipa_name="项目名"
api_key="蒲公英的api_key"
if [ ! -n "$1" ] ;then
env="build"
fi
# 向iOS的Info.plist里面写值
# environment="production"
# if [[ $env = "dev" ]]; then
# environment="development"
# fi
# path=$(cd `dirname $0`; pwd)
# target_plist="$path/uniapp-yuexiuhui-iOS/Info.plist"
# echo $target_plist
# for plist in "$target_plist"; do
# if [[ -f "$plist" ]]; then
# /usr/libexec/PlistBuddy -c "Set :Environment $environment" "$plist"
# done
# 修改YXHCommon.m文件,这个的目的主要是切换生产环境与测试环境的,修改的值主要用于条件编译
cd uniapp-yuexiuhui-iOS/utils
if [[ "dev" = $env ]]; then
sed -i '' 's/#if false/#if true/g' YXHCommon.m
else
sed -i '' 's/#if true/#if false/g' YXHCommon.m
cd ../..
cd ../uniapp-yuexiuhui-vue
# 而下面的npm run xxx这个主要是HbuilderX 打包脚本
if [ "dev" = $env ]
then
npm run dev:app-plus
npm run build:app-plus
echo '------覆盖www------'
cp -R dist/$env/app-plus/ ../$ipa_name/$ipa_name/Pandora/apps/__UNI__E59AA60/www
cd ../uniapp-yuexiuhui-iOS
fastlane pgy
cd ./build
export_ipa_path=$(cd `dirname $0`; pwd)
#上传ipa到蒲公英 我自己加的
if [ -f "${export_ipa_path}/${ipa_name}.ipa" ]
echo '开始上传ipa/apk到蒲公英'
result=$(curl -F "file=@${export_ipa_path}/${ipa_name}.ipa" -F "_api_key=${api_key}" -F "buildUpdateDescription=${buildUpdateDescription}" 'http://www.pgyer.com/apiv2/app/upload')
echo "在目录:${export_ipa_path}/${ipa_name}.ipa 不存在"
echo '上传到蒲公英成功'
exit 0
2.上传到TestFlight的脚本
#!/bin/bashenv=$1if [ ! -n "$1" ] ;then env="build"ficd uniapp-yuexiuhui-iOS/utilsif [[ "dev" = $env ]]; then sed -i '' 's/#if false/#if true/g' YXHCommon.melse sed -i '' 's/#if true/#if false/g' YXHCommon.mficd ../..cd ../uniapp-yuexiuhui-vueif [ "dev" = $env ]then npm run dev:app-pluselse npm run build:app-plusfiecho '------覆盖www------'cp -R dist/$env/app-plus/ ../uniapp-yuexiuhui-iOS/uniapp-yuexiuhui-iOS/Pandora/apps/__UNI__E59AA60/wwwcd ../uniapp-yuexiuhui-iOSfastlane betaexit 0
cp -R dist/$env/app-plus/ ../uniapp-yuexiuhui-iOS/uniapp-yuexiuhui-iOS/Pandora/apps/__UNI__E59AA60/www
fastlane beta
3.如果运行脚本报错请检查shell语法,当然你也可以用Python写 如有什么疑问可以联系我: WeChat:fengsh_h e-mail: fengsh_h@aliyun.com
原文链接:http://www.cnblogs.com/fshmjl/p/14119071.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728