IOS自动打包研究
//自动打包sh https://github.com/jkpang/PPAutoPackageScript
注 最后问题解决使用手动导出的plist文件 并且 把<key>compileBitcode</key>
<false/>
为false 就能打包成功了
xcode 9 了 自动打包也出现问题了, 找到一个文章: 注 但是我这里打包还是出问题,但是离成功更近一步
From: http://www.jianshu.com/p/9bae9e433035
Xcode
是不是很开心终于升级Xcode9了。
是不是上传Fir发现错误内心崩溃了。
是不是在满大街查找解决方法。
自动上传脚本,保存到项目的目录下,使用sh *.sh -u 进行上传,其中的fir的token和项目的名称需要修改,其他的等报错再修改吧。详见如下:
#/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 只能想办法解决。先看下报错日志:
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证书,是的吧。我也是这样想的,然后发现然并卵。
自动脚本发现不可行时,我想到的方法是那只能手动了。选择相应的Build Configuration进行Building生成*.app.
切换编译配置
然后获取到.app,将这个文件拖到iTunes上进行.app转*.ipa,是吧。
这个一个坑啊。,你会发现怎么找不到“应用程序”的选项啊。
iTunes的最新版本已经将app Store的功能取消了,已经没有应用程序的选项了。折磨了大半天,发现None is None。
最后只能使用最后的方法了,使用Xcode的Archive再导出ipa包。与上传App Store的方法类似。(不会给我留言哈)
最后生成的文件有:
ipa文件
将生成的*.ipa文件上传到Fir上,工作完成。
首先是不是觉得怎么多了3个文件啊,呵呵哒。这就是Xcode的改变啊。主要变化是多了ExportOptions文件,这个应该与之前的报错有关。
其次找到了自动上传的方法了,将这个ExportOptions的文件放到项目中,我的目录是
9BCA754A-C6AF-4529-9360-8453E0ADD652.png
然后在执行自动化上传Fir脚本成功。
发现在Xcode 9中,exportOptions.plist的变化,
之前
之后
之后
主要多了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
最近在发现每次打开发包测试非常的耗时和麻烦 , 发布包就无所谓了现在需求就一个包,
然后研究了下自动打包,google 了一番各种尝试 然后实行了一个方法
|
|
build.sh 文件,放在项目目录
cd 到目录 sh build.sh
运行
OK了,发现很多文章说配置文件的路径 和名字问题, 这个sh 没有这样的配置,还能是默认的,反正实现了我的自动打包,以后在研究 ,
优化了下代码打包正式包 ,
|
|
迷你版本无打包方式不同
|
|
2016 双11 更新
自动上传fir.im
安装
|
|
要是证书问题自行搜索,我重新安装了下更新了下ssl ok了
上传代码跟在上面的后面
|
|
– #############上传到蒲公英##############
|
|
发现fir.im 需要ruby 2.2.4 版本 出了一个ssl 错误, 然后升级版本改了pem 文件好了 但是还是觉得是ruby 版本的问题
install_url
to use ShareThis. Please set it in _config.yml
.