01
明确任务目标
![ace9169ea264e3121357fa522a7fc6cc.gif](https://i-blog.csdnimg.cn/blog_migrate/32aeeb507bf571738667984f3249e4ad.gif)
首先确定任务目标——对iPhone上的指定app进行启动时间的数据统计,通过查阅相关资料发现Xcode中自带的instruments工具,在Xcode11中该工具中添加了app Lunch模板;通过使用app Lunch模板我们可以观察到APP在启动时的具体数值(进程创建、系统初始化、运行时的初始化、UIKit初始化、启动、第一帧渲染 )。
前提条件:instruments工具只能对含有developer证书签名的APP进行检测,否则会存在报错提示。
02
实现图形化界面的操作
![ace9169ea264e3121357fa522a7fc6cc.gif](https://i-blog.csdnimg.cn/blog_migrate/32aeeb507bf571738667984f3249e4ad.gif)
第一步:安装测试的APP,首先将ipa文
件放入指定路径中,通过命令
ideviceinstaller来实现安装ipa文件:
ideviceinstaller -i ipa文件
第二步:调用instruments工具中的
app Lunch模板来对客户端进行启动时间
的数据获取:
instruments -t ${路径1}/App\
Launch.tracetemplate -D ${路径2}
/test.trace -w ${idevice_id}
cn.com.10jqka.IHexin
其中:
路径1是采用的模板存放路径;
路径2是获取到的数据存放路径;
第三步:对获取到的数据进行解析,在
MAC中直接vim打开.trace文件会发现
全是乱码,在寻找资料时发现了一篇文章
(文章链接:https://
www.cnblogs.com/hyddd/p/5329608.html)
该文章中提到了可以使用TraceUtility来
解析数据,于是使用该工具完成了对
.trace文件的解析:
${路径3}/TraceUtility /
${路径2}/test.trace>test.log
第四步:通过MAC自带相关命令取出
test.log内数据并进行求和取平均值。
脚本如下:
#!/bin/bash/
set+o posix
set-v
path1=/Applications/Xcode11.app/Contents/
Applications/Instruments.app/Contents/
path2=/Users/admin/Desktop/guojl/
performance
path3=/Users/admin/Desktop/guojl/testbuild
ipaname=`ls${path3} | grep -ni "*.ipa"`
ideviceinstaller-i ${path3}/${ipaname}
num1=0
mac=`idevice_id-l`
for i in {1..10}
do
instruments -t/${path1}/Packages/
Apps.instrdst/Contents/Templates/App\
Launch.tracetemplate-D/${path2}/result/
test.trace -w ${mac} cn.com.10jqka.IHexin
/${path2}/tools/TraceUtility/${path2}
/result/test.trace >&/${path2}/log/test.log
cat /${path2}/log/test.log |awk -F
' ' 'NF>1{print $(NF-1)}' >/${path2}/log/
time.log
cat /${path2}/log/time.log |awk '{
print $1}'| awk '{sum+=$1}END{print sum}'>>/
${path2}/log/result.log
rm -f/${path2}/result/test.trace
rm -f /${path2}/log/test.log
rm -f /${path2}/log/time.log
done
num1=`cat /${path2}/log/result.log |
awk'{print $1}' | awk '{sum+=$1}END
{print sum}'`
echo "${num1} / 1" | bc>/${path2}/log/
zhixingjieguo.log
echo "">/${path2}/log/result.log
cat /${path2}/log/zhixingjieguo.log
03
最后再简要概述一下使用说明
![ace9169ea264e3121357fa522a7fc6cc.gif](https://i-blog.csdnimg.cn/blog_migrate/32aeeb507bf571738667984f3249e4ad.gif)
脚本存放路径:
/Users/dabao/guojl/performence/
执行结果文件存放路径: /Users/dabao/guojl/performence/log/ /Users/dabao/guojl/performence/
result/
包括:
time.log test.log
zhixingjieguo.log
result.log
test.trace
脚本执行命令:
在performence文件夹下:
sh test_applunch.sh
./test_applunch.sh
获取结果:10次启动时间的平均值。
![65e0dd4b641cb4f6170c856bf7179585.png](https://i-blog.csdnimg.cn/blog_migrate/5f172cf459d007180d90d1b64385afbf.jpeg)