“Iphone app 测试有些坑,如何绕过这些坑呢?
苹果系统跟 Android 系统完全不一样,测试起来也有很大的不同。
在测试中常见的,如 xcode 版本问题,打包证书问题,闪退无法重现,不好抓 log, 上架被拒问题等等。本文总结一些常见的坑,可以完美绕过去。
Android 手机闪退,可以用 adb 很轻易的拿到 log. IOS 系统主要是沙盒,你没法很轻松的就拿到 log. 在 iPhone 手机上的软件发生闪退或开发 iOS 应用程序时出现的闪退,一般都会自己或系统生成崩溃日志,那么我们从哪里以及怎么获取到崩溃日志呢?
iPhone 手机一台 数据线一条 Xcode 开发工具(可选)
而由于 iOS 系统的沙盒机制,一般我们不能直接访问它获取,但可以有下面的几种方法获取。
1.在 iTunes Store 上获取。使用数据线连接手机和电脑,就可以从电脑的以下路径找到崩溃日志了。
macOS :~/Library/Logs/CrashReporter/MobileDevice/< DEVICE_NAME \> Windows :C:/Users/< USERNAME > /AppDataRoamingApple/ComputerLogsCrashReporterMobileDevice/< DEVICE_NAME >
2.如果你是开发者,可以从 iTunes Connect 上获取。但前提需手机用户打开设置->隐私->诊断与用量的开关。
3.可以通过开发工具 Xcode,数据线连接电脑获取。通过在Xcode->Window->Devices,然后选中真机设备,点击View Device Logs。等待扫描后获取对应应用和日期的日志。
4.如果是应用开发者,自己代码中记录崩溃日志,并上传到服务器,发生崩溃后从网站日志管理中获取对应的崩溃日志即可。
Mac 就一个市场,上架需要官方审核。Android 如果不上 Google play,审核相对松很多,快很多。
发布App Store 审核分 6 步进行。
1、申请 iOS 发布证书(p12)
2、申请 iOS 发布描述文件(mobileprovision)
3、打包 ipa
4、上传 ipa 到 iTunes Connect
5、TestFlight 方式安装到苹果手机测试
6、设置 APP 各项信息提交审核
因为上线风险大,回撤成本高,一般都是灰度发布。
TestFlight 的测试方式分为两种,一种是内部测试,一种是外部测试。从功能上讲,这两种方式都可以为测试人员在测试阶段对你的 App 进行测试。内部测试最多可以邀请 25 个内部成员,而与之相对的外部测试,指的是那些不属于你的团队或者公司的测试者,外部测试人员的上限是 10000 人。这里有一点需要注意的是,在你邀请外部成员参与测试之前,需要先通过苹果的审核,一般审核会在一天左右。而这一限制在内部成员上就没有,也就是说只要你把你的 App 上传到 iTunes Connect 上之后内部成员就可以开始进行内部测试了,无需审核。
准备工作
待测试的 ipa 包(用 Application Loader 上传)或者是 archive (用 Xcode Upload to App Store)文件(需要上传到 iTunes Connect );
到 App Store 下载安装软件 TestFlight;
将打包好的 ipa 或 xcarchive 文件上传到 iTunes Connect;
登录到 iTunes Connect 进入我的 APP,选择你的 APP;
到 TestFlight 模块下,如果 App Store 有提交过的版本,内部测试员就可以了,我们只需要添加内部测试员用户即可。
iOS APP 审核比较严格,难免会出现被拒绝的情况,需要根据苹果反馈的问题修改后重新打包上传审核!
登录 itunesconnect、https://itunesconnect.apple.com [1]进入被拒绝的 APP 页面
点击未解决的 iOS 问题,进入查看原因。
查看具体被拒绝的原因,查看反馈的审核截图,根据问题修改 app 重新打包上传。
有些苹果要求你在下面回复反馈的问题,可以直接写中文,回复了就不用上传新的 ipa 重新提交审核了。
看具体的反馈,决定是否直接回复还是重新打包上传 ipa 提交审核!
为什么要测试这个玩意,因为 app 是跟开发者证书绑定的,证书是有有效期限的,如果过期,就不能正常使用。也许开发没注意到这点,在上线前,测试要看看这个过期时间是不是很近了。如果是,要告知风险。
Do the following:
unzip -q MyApp.ipa
$ codesign -d --extract-certificates Payload/*.app
$ openssl x509 -inform DER -in codesign0 -noout -nameopt -oneline -dates
WebDriverAgent 是由 Facebook 开发的一套开源框架,用于端对端的 UI 测试,能同时支持模拟器和真机。
因为 Mac 系统的特性,我们很难操作非越狱的手机,幸好有 Facebook 的 WebDriverAgent,通过它可以实现远程控制手机,一般自动化测试用的多,其它用途需要自己探索。如果想要 python 调用 WebDriverAgent 的功能,那么还需要 facebook-wda。
git clone https://github.com/facebook/WebDriverAgent
或者直接下载 ZIP 压缩包./Scripts/bootstrap.sh
image
image
image
image此时控制台界面可以看到设备的 IP:
image此 IP 地址加上status
,例如http://169.254.120.53:8100/status
,用浏览器打开,会显示一串 JSON 串,则代表成功,如果加上 inspector,会得到如下界面
image
brew install usbmuxd
把手机上的 8100 端口转到电脑上iproxy 8100 8100
image以后输入地址只需要输入 localhost 即可,例如:http://localhost:8100/inspector
sudo pip install --pre facebook-wda
git clone https://github.com/openatx/facebook-wda
或者直接下载 ZIP 压缩包sudo python setup.py install
前提条件:首先启动 WebDriverAgent,运行 Test,待显示出 ip 地址,然后转换端口。给 iPhone 截屏并保存,更多功能请自己在 GitHub 上查找https://github.com/openatx/facebook-wda[2]
import wdac = wda.Client('http://localhost:8100')c.screenshot('/Users/gcf/Desktop/shotImg/%dscreen.png' % (tag))
Failed to download resource "carthage"
,需要安装 carthage brew install carthage
[1]
https://itunesconnect.apple.com : https://itunesconnect.apple.com/
[2]
https://github.com/openatx/facebook-wda: https://link.jianshu.com?t=https%3A%2F%2Fgithub.com%2Fopenatx%2Ffacebook-wda
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有