是否是很開心終於升級Xcode9了。 是否是上傳Fir發現錯誤心裏崩潰了。 是否是在滿大街查找解決方法。xcode
自動上傳腳本,保存到項目的目錄下,使用sh *.sh -u 進行上傳,其中的fir的token和項目的名稱須要修改,其餘的等報錯再修改吧。詳見以下:bash
#/bin/sh
#coding utf-8
#上傳模塊須要FIR.im CLI
#安裝gem install fir-cli
#token 獲取 http://fir.im/user/info
#安靜模式,不輸出多餘log
quiet=1
while getopts "huv" arg #選項後面的冒號表示該選項須要參數
do
case $arg in
t)
echo "t's arg:$OPTARG" #參數存在$OPTARG中
;;
u)
upload=1
;;
v)
quiet=0
;;
h)
echo Commands:
echo " make -u #build ipa and upload fir.im"
;;
?) #當有不認識的選項的時候arg爲?
echo "unkonw argument"
;;
esac
done
token="須要替換" #token 獲取 http://fir.im/user/info
echo '--------------start----------------'
echo '>> clean...'
proj=$(cd $(dirname ${0}) ; pwd -P)
xcodebuild clean 1>/dev/null
project=須要替換
product="$proj/build/$project.ipa"
rm $product
echo '>> build...'
if [[ $quiet == 1 ]]
then
xcodebuild -workspace "$project.xcworkspace" -scheme "$project" archive -archivePath $proj/build/$project.xcarchive -configuration Ad-hoc -sdk iphoneos >/dev/null
else
xcodebuild -workspace "$project.xcworkspace" -scheme "$project" archive -archivePath $proj/build/$project.xcarchive -configuration Ad-hoc -sdk iphoneos
fi
echo '>> create ipa...'
xcodebuild -exportArchive -archivePath $proj/build/$project.xcarchive -exportOptionsPlist exportOptions.plist -exportPath "$proj/build"
#copy dsym to xcarchives
echo '>> archive dsym...'
if [[ -d $proj/build/$project.xcarchive ]]
then
filename=$(date "+%Y%m%d%H%M.%S")
mkdir -p "$proj/build/archives"
cp -r $proj/build/$project.xcarchive/ "$proj/build/archives/$filename.xcarchive"
cp "$product" "$proj/build/archives/$filename.xcarchive"
fi
if [[ $upload == 1 ]] && [[ -f "$product" ]]
then
fir l $token
fir p "$product"
clear
fir i "$product"
else
open "$proj/build"
fi
複製代碼
使用以前的Fir自動上傳腳本,忽然發現報錯了,可在升級Xcode 9以前明明仍是好的呢,So 只能想辦法解決。先看下報錯日誌:app
2017-09-20 14:22:07.140 xcodebuild[31386:364151] [MT] IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7f8cdcc95b90>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed." UserInfo={NSLocalizedDescription=Locating signing assets failed., IDEDistributionSigningAssetStepUnderlyingErrors=(
"Error Domain=IDEProvisioningErrorDomain Code=9 \"\"name.app\" requires a provisioning profile with the Push Notifications feature.\" UserInfo={NSLocalizedDescription=\"name.app\" requires a provisioning profile with the Push Notifications feature., NSLocalizedRecoverySuggestion=Add a profile to the \"provisioningProfiles\" dictionary in your Export Options property list.}"
)}
error: exportArchive: "name.app" requires a provisioning profile with the Push Notifications feature.
Error Domain=IDEProvisioningErrorDomain Code=9 ""name.app" requires a provisioning profile with the Push Notifications feature." UserInfo={NSLocalizedDescription="name.app" requires a provisioning profile with the Push Notifications feature., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}
** EXPORT FAILED **
複製代碼
第一反應是否是從新制做一遍Push證書,是的吧。我也是這樣想的,而後發現然並卵。iphone
自動腳本發現不可行時,我想到的方法是那隻能手動了。選擇相應的Build Configuration進行Building生成*.app.學習
而後獲取到*.app,將這個文件拖到iTunes上進行*.app轉*.ipa,是吧。這個一個坑啊。,你會發現怎麼找不到「應用程序」的選項啊。 iTunes的最新版本已經將app Store的功能取消了,已經沒有應用程序的選項了。折磨了大半天,發現None is None。ui
最後只能使用最後的方法了,使用Xcode的Archive再導出ipa包。與上傳App Store的方法相似。(不會給我留言哈) 最後生成的文件有:spa
將生成的*.ipa文件上傳到Fir上,工做完成。3d
首先是否是以爲怎麼多了3個文件啊,呵呵噠。這就是Xcode的改變啊。主要變化是多了ExportOptions文件,這個應該與以前的報錯有關。 其次找到了自動上傳的方法了,將這個ExportOptions的文件放到項目中,個人目錄是 日誌
而後在執行自動化上傳Fir腳本成功。發如今Xcode 9中,exportOptions.plist的變化,code
以後
主要多了provisioningProfiles, signingCertificate和signingStyle。針對自動化腳本的報錯,應該是少了provisioningProfiles的屬性。 按圖片手動添加全部屬性就能夠執行成功了,固然你也能夠先使用Xcode導出一次獲取到exportOptions.plist文件。
每次升級系統或Xcode都會有一天的時間是在等待和解決問題。今天iOS11 還碰到了由於使用了WebViewJavascriptBridge第三方庫致使奔潰的問題,又是忙了一陣,解決方法:
WebViewJavascriptBridgeBase *base = [[WebViewJavascriptBridgeBase alloc] init];
if ([base isWebViewJavascriptBridgeURL:navigationAction.request.URL]) {
DLog(@"isWebViewJavascriptBridgeURL is YES.");
return;
}
decisionHandler(WKNavigationActionPolicyAllow);
複製代碼
// END 一直在學習從未中止過,可一直未學透從未知足過。