17、iOS开发调试与应用发布指南

iOS开发调试与应用发布指南

1. 环境覆盖弹窗与Instruments工具

在开发过程中,环境覆盖弹窗默认情况下所有变量都是关闭的。你可以选择相应的开关来启用外观、文本或辅助功能。通过调整这些变量,观察它们对应用的影响。

Instruments是Xcode提供的最重要的工具之一,它是Xcode工具集的一部分,与之前学习的其他工具略有不同。从Xcode中打开Instruments时,它会作为一个独立的应用程序打开。

Instruments基于跟踪数据(也称为跟踪)给出结果。该工具会从应用中难以调试的重要部分收集跟踪信息,例如应用的内部基础设施、进程和操作系统。你还可以保存所有的分析跟踪信息,并与团队或同事分享。

打开Instruments的步骤如下:
1. 选择Xcode ▸ Open Developer Tool。
2. 选择Instruments,会弹出一个窗口。

Instruments包含多个分析模板,每个模板都根据你的需求工作,完整列表如下:
| 模板名称 | 用途 |
| ---- | ---- |
| Blank | 空白模板 |
| Activity Monitor | 活动监视器,监控系统进程 |
| Allocations | 内存分配 |
| Animation Hitches | 动画卡顿检测 |
| App Launch | 应用启动分析 |
| Core Data | 用于调查与Core Data相关的错误 |
| CPU Counters | CPU计数器 |
| CPU Profiler | CPU分析器 |
| File Activity | 文件活动监控 |
| Game Performance | 游戏性能分析 |
| Leaks | 内存泄漏检测 |
| Logging | 日志记录 |
| Metal System Trace | Metal系统跟踪 |
| Network | 网络分析 |
| SceneKit | SceneKit相关分析 |
| SwiftUI | 用于识别SwiftUI相关问题 |
| System Trace | 系统跟踪 |
| Tailspin | 特定的分析模板 |
| Time Profiler | 时间分析器 |
| Zombies | 僵尸对象检测 |

这里有各种各样的模板,从帮助调查Core Data相关错误的Core Data模板,到可用于识别影响用户体验的慢帧等问题的SwiftUI模板,还有像Logging或Activity Monitor这样用于监控系统级进程的通用工具。接下来,我们将重点关注Leaks模板。

2. Leaks模板的使用

在开发过程中,你不会每次都使用所有的分析模板。为了基本了解如何使用分析器,我们将使用Leaks模板。

Leaks模板用于测量总体内存使用情况并检测内存泄漏。它还会记录类的所有内存分配以及对内存地址的其他引用,包括活动分配和泄漏的代码块。

使用Leaks模板的步骤如下:
1. 在Instruments窗口中,选择Leaks并点击Choose。
2. 屏幕上各部分的功能如下:
- 点击“Start an immediate mode recording”可以开始记录跟踪信息。
- 该按钮用于暂停已开始的分析。
- 此按钮用于选择模拟器或进程。
- 你可以使用此按钮添加更多工具。
- 该按钮可帮助你隐藏或显示详细区域。
- 使用此按钮隐藏或显示检查器区域。
- 若要一次专注于一个工具,你可以设置工具过滤器。
- 点击duplicate可保存当前的跟踪数据。
- 该区域显示工具列表。Leaks模板自带一个Allocations工具,每个新添加的工具都会显示在这里。
- 显示所选工具的应用程序图表。
- 你可以查看内存中的对象及其占用的空间。
- 显示堆栈跟踪信息。

  1. 在顶部选择模拟器和PetSave,然后点击“Start an immediate mode recording”,应用会在模拟器上打开,你会看到以下信息:

    • 显示应用的内存分配情况。
    • 显示所有的内存泄漏情况。绿色复选框表示没有泄漏,红色叉号表示有新的泄漏,灰色破折号表示没有新的泄漏。
    • 显示所有导致内存泄漏的对象。注意,在Instruments中选择了Leaks,并且下方的过滤器设置为Leaks。
    • 显示左窗格中所选对象的堆栈跟踪信息。
  2. 双击红色图标可在下方部分显示所有的内存泄漏信息,这里看到的泄漏是系统生成的。

3. 保留循环问题

保留循环发生在两个对象相互持有引用时,这两个对象会一直留在内存中,不会被释放。你可以在Leaks工具或调试内存图中检查保留循环。

为了消除这个问题,你可以将依赖对象的引用设置为弱引用(weak)。默认情况下,这些引用是强引用(strong)。还有另一种类型的引用是无主引用(unowned),弱引用和无主引用的主要区别在于,弱引用可以为nil,而无主引用在其生命周期内不能为nil。

以下是一个示例代码:

// 1
class PetOwner {
  var name: String?
  var pet: Pet?
  deinit {
    print("Petowner removed!")
  }
}
// 2
class Pet {
  var name: String?
  var owner: PetOwner?
  deinit {
    print("Pet removed!")
  }
}
// 3
var pet: Pet? = Pet()
pet?.name = "Snowfy"
// 4
let petOwner = PetOwner()
petOwner.name = "Ray"
petOwner.pet = pet
pet?.owner = petOwner

代码解释如下:
1. PetOwner类包含主人的姓名和Pet对象。
2. Pet类包含宠物的姓名和主人对象。
3. 创建一个Pet对象。
4. PetOwner对象引用Pet对象,Pet对象引用其主人对象。

现在,假设在某个时刻变量pet变为nil,你可能认为对象会被释放并调用deinit方法,但实际上不会,因为两个对象相互强引用。为了释放内存,你可以将其中一个引用设置为弱引用,如下所示:

class PetOwner {
  var name: String?
  weak var pet: Pet?
  deinit {
    print("Petowner removed!")
  }
}

这样,deinit方法就会被调用。

闭包也可能会创建保留循环。例如,在闭包中引用self时,最好使用[weak self]来避免保留循环。示例代码如下:

DispatchQueue.main.asyncAfter(deadline: .now()) {[weak self] in
  self?.doSomeUIUpdates()
}

你也可以根据需求使用[unowned self]。

4. 关键要点总结
  • 断点可以帮助你逐行调试代码。
  • 添加断点表达式在查找特定值时很有用。
  • 使用Xcode的内存图来查找代码中的保留循环和内存泄漏。
  • 调用栈显示内存栈中的所有方法,你可以使用栈导航到初始方法。
  • 使用Instruments来分析你的应用程序,它提供了多个分析模板,可用于调查内存泄漏、内存分配或网络使用情况。
  • 通过创建弱引用或无主引用,消除强引用导致的保留循环。

mermaid流程图如下:

graph LR
    A[开始调试] --> B[使用断点]
    B --> C[添加断点表达式]
    C --> D[使用Instruments]
    D --> E[选择Leaks模板]
    E --> F[检测内存泄漏]
    F --> G[处理保留循环]
5. 应用发布到App Store的准备工作

当你完成开发和调试后,就可以将应用发布到App Store了。在开始上传应用到App Store之前,你需要完成以下几件事。

5.1 创建Apple ID

Apple ID是你在苹果生态系统中的主要账户,用于访问App Store、苹果服务和其他苹果门户。开发者也使用Apple ID访问苹果开发者门户和App Store Connect。

创建Apple ID的步骤如下:
1. 在Safari中打开苹果的Apple ID门户。
2. 点击右上角的Create Your Apple ID。
3. 填写表格,包括你的名字、姓氏、地区和所有必填信息。注意你使用的电子邮件地址,它将成为你的新Apple ID。
4. 按照屏幕上的步骤验证你的信息。如果你遇到任何问题,可以查看苹果的“How to create a new Apple ID”页面。

5.2 激活双因素认证

双因素认证是在你的账户密码之上的额外安全层,它通过验证码提供一种安全的方式,让你可以在受信任的设备上登录账户。

激活双因素认证的步骤如下:
1. 前往Apple ID门户并登录。
2. 页面会提示你使用双因素认证升级账户安全,点击upgrade并输入你希望在登录时接收验证码的电话号码。
3. 点击Continue并输入验证码以验证你的电话号码并开启双因素认证。强烈建议你在苹果设备上设置双因素认证,这样你就有一个受信任的设备来登录账户。你可以查看苹果的“Two-factor authentication for Apple ID”页面,了解更多关于双因素认证以及如何在设备上激活它的信息。

5.3 加入苹果开发者计划

仅仅拥有Apple ID是不够的,苹果对进入App Store的开发者和应用非常严格,它试图为其用户创建最安全的环境。因此,每个想要在App Store上发布应用的开发者都需要加入苹果开发者计划。

加入苹果开发者计划的步骤如下:
1. 该计划每年收费99美元,你可以使用Apple ID进行注册。
2. 打开开发者门户并登录你的账户。
3. 苹果有两种注册类型:个人注册和组织注册。每种类型有不同的法律、税务和财务影响,但都可以访问相同的开发者工具。
4. 如果你使用自己的Apple ID,个人注册就可以;但如果你以公司名义发布应用,则需要进行组织注册。
5. 按照屏幕上的说明填写信息以加入该计划,你可以查看苹果的“Enrolling and Verifying Your Identity with the Apple Developer App”页面,了解详细的操作步骤。

6. 设置Xcode

在Xcode中创建新项目时,你需要选择一些选项,包括组织标识符,Xcode会据此生成Bundle Identifier,苹果使用这些来识别团队和应用。

6.1 更改Bundle Identifier

Bundle Identifier是应用在苹果系统中的唯一标识符,一旦设置就不能更改,所以要仔细考虑你要使用的标识符。通常的做法是使用应用网站的反向DNS表示法,并且由于这是唯一标识符,你不能使用其他应用已经使用过的标识符。

更改Bundle Identifier的步骤如下:
1. 打开本章的起始项目,在项目导航器中选择你的目标。
2. 在General标签中,将Bundle Identifier更改为你自己的标识符。

6.2 代码签名

在同一目标中,打开Signing and Capabilities,确保勾选“Automatically manage signing”,这会让Xcode负责管理应用的证书和配置文件,为你省去一个复杂而繁琐的任务。

如果状态部分出现警告,这是因为你需要使用Apple ID登录Xcode并为应用选择团队。具体步骤如下:
1. 点击Xcode ▸ Preferences…,选择Accounts标签。
2. 点击视图左下角的+号添加账户。
3. 选择Apple ID并输入你加入苹果开发者计划时使用的Apple ID,必须使用该Apple ID,否则Xcode将无法将你的应用上传到苹果。
4. 你将收到双因素认证的验证码,在字段中输入该代码。
5. 成功后,你就使用Apple ID账户配置好了Xcode。返回项目导航器并选择你的团队,这将消除Signing and Capabilities中的警告。

7. 创建App ID和App Store Connect页面
7.1 创建新的App ID

在苹果门户中创建应用之前,你必须创建一个新的App ID,苹果使用App ID在其系统中识别你的应用。

创建新App ID的步骤如下:
1. 在Safari中打开苹果开发者门户,点击Account,输入你的Apple ID和密码。
2. 选择Certificates, Identifiers & Profiles,点击Identifiers。
3. 在这里,你可以找到并管理所有应用的标识符。
4. 点击Identifiers旁边的蓝色+号,从列表中选择App IDs。
5. 点击Continue,在下一页中,保持App被选中,再次点击Continue。
6. 填写表格,包括描述和Bundle ID。描述可以是你用来识别应用的任何内容,并且你可以在以后编辑它;Bundle ID必须是你在Xcode中为应用使用的那个,并且以后不能更改。
7. 由于PetSave不使用任何功能和应用服务,所以保持这些选项未选中。
8. 点击Continue,审核所有信息后点击Register完成操作。

7.2 创建App Store Connect页面

仍然在Safari中,再次打开苹果开发者门户,选择App Store Connect,点击Go to App Store Connect。你也可以通过在Safari中使用链接https://appstoreconnect.apple.com 访问App Store Connect。

App Store Connect页面提供了多个工具,如应用分析、销售和趋势以及支付和财务报告,用于在App Store中发展和管理你的应用。

创建新应用页面的步骤如下:
1. 点击My Apps,该页面列出了你账户下创建的所有应用,并让你跟踪应用的状态。
2. 在该页面上,点击左上角的蓝色+号,然后点击New App,打开一个表单,填写创建新应用所需的信息。
3. 在Platforms下,勾选iOS。为应用输入名称,如PetSave-Test,并选择英语(美国)作为主要语言,这里选择的名称将是你的应用在App Store中的名称。
4. 选择你在Certificates, Identifiers & Profiles页面的Identifiers下刚刚创建的Bundle ID,并在SKU字段中输入相同的Bundle ID。SKU代表库存单位,这是一个内部标识符,用于将你的应用与你的团队匹配。
5. 注意,你选择的名称必须是唯一的。如果另一个应用已经使用了你的应用名称,你可以尝试提出索赔或更改应用名称。你的Bundle ID和SKU也应该与示例不同。
6. 点击Create完成操作。

mermaid流程图如下:

graph LR
    A[准备发布应用] --> B[创建Apple ID]
    B --> C[激活双因素认证]
    C --> D[加入开发者计划]
    D --> E[设置Xcode]
    E --> F[更改Bundle Identifier]
    F --> G[代码签名]
    G --> H[创建App ID]
    H --> I[创建App Store Connect页面]

通过以上步骤,你就完成了应用开发调试和发布到App Store的准备工作。希望这些信息对你有所帮助,祝你成功将应用发布到App Store!

iOS开发调试与应用发布指南

8. 理解App Store应用页面

仅仅将应用上传到苹果还不够,你还需要创建应用页面,以便苹果在App Store中展示它。应用页面是人们在App Store中浏览或搜索与宠物相关应用时看到的应用“脸面”。

8.1 页面结构

应用页面包含应用名称、图标、副标题、应用评论、截图、描述等内容。这个页面是App Store用户看到的应用的第一印象,一个好的、信息丰富的页面会吸引人们下载你的应用,随着时间的推移让应用更受欢迎。

页面元素 说明
应用名称 应用在App Store中显示的名称
图标 应用的标志性图标
副标题 对应用的简短描述
应用评论 用户对应用的评价
截图 展示应用界面和功能的图片
描述 详细介绍应用的功能和特点
8.2 最佳实践

为了让应用页面更吸引人,可以参考以下最佳实践:
- 清晰的名称和描述 :应用名称要简洁明了,描述要详细准确,让用户快速了解应用的功能。
- 高质量的图标和截图 :图标要具有辨识度,截图要展示应用的核心功能和亮点。
- 积极的用户评价 :鼓励用户留下正面评价,及时回复用户的反馈。

9. 应用存档和上传

完成应用页面的创建后,接下来需要将应用存档并上传到苹果。

9.1 存档应用

在Xcode中存档应用的步骤如下:
1. 选择Product ▸ Archive,Xcode会开始构建和存档你的应用。
2. 存档完成后,会弹出Organizer窗口,显示存档的应用。

9.2 上传应用

上传应用的步骤如下:
1. 在Organizer窗口中,选择你要上传的存档应用,点击Distribute App。
2. 选择App Store Connect,点击Next。
3. 选择Upload,点击Next。
4. 选择你要使用的证书和配置文件,点击Next。
5. 确认上传信息,点击Upload,Xcode会将应用上传到App Store Connect。

10. 使用TestFlight进行Beta测试

在正式发布应用之前,建议使用TestFlight进行Beta测试,收集测试人员的反馈,确保应用的质量。

10.1 配置TestFlight

配置TestFlight的步骤如下:
1. 打开App Store Connect,选择My Apps,选择你的应用。
2. 点击TestFlight,点击Internal Testers或External Testers,添加测试人员的电子邮件地址。
3. 上传你存档的应用,选择要测试的版本,点击Save。

10.2 邀请测试人员

邀请测试人员的步骤如下:
1. 在TestFlight中,选择你要邀请的测试人员组,点击Invite。
2. 测试人员会收到一封邀请邮件,点击邮件中的链接,按照提示下载和安装应用。

10.3 收集反馈

测试人员可以在TestFlight中提交反馈,你可以在App Store Connect中查看和管理这些反馈。根据反馈,及时修复应用中的问题,优化应用的性能和用户体验。

11. 应用审核和发布

完成Beta测试后,就可以提交应用进行审核,审核通过后即可正式发布应用。

11.1 提交审核

提交应用审核的步骤如下:
1. 打开App Store Connect,选择My Apps,选择你的应用。
2. 点击Activity,点击+ Version or Platform,选择iOS。
3. 填写应用的版本信息、描述、截图等内容,点击Save。
4. 点击Pricing and Availability,设置应用的价格和可用性。
5. 点击Submit for Review,提交应用进行审核。

11.2 审核过程

苹果会对提交的应用进行审核,审核时间通常为1 - 2个工作日,但可能会因各种原因而延长。审核过程中,苹果会检查应用是否符合App Store审核指南,如是否包含违规内容、是否存在安全漏洞等。

11.3 发布应用

如果应用审核通过,你可以选择立即发布应用,或者设置发布时间。发布应用后,用户就可以在App Store中搜索和下载你的应用了。

mermaid流程图如下:

graph LR
    A[准备发布应用] --> B[创建App Store应用页面]
    B --> C[存档应用]
    C --> D[上传应用到App Store Connect]
    D --> E[配置TestFlight进行Beta测试]
    E --> F[邀请测试人员]
    F --> G[收集反馈并优化应用]
    G --> H[提交应用审核]
    H --> I[审核通过]
    I --> J[发布应用]
12. 总结

本文详细介绍了iOS应用开发调试和发布到App Store的全过程,包括环境覆盖弹窗与Instruments工具的使用、内存泄漏检测和保留循环处理、应用发布的准备工作(创建Apple ID、加入开发者计划、设置Xcode等)、应用页面的创建、存档和上传、TestFlight测试以及应用审核和发布等内容。

通过掌握这些知识和技能,你可以更好地开发和发布iOS应用,提高应用的质量和用户体验。希望这些内容对你有所帮助,祝你在iOS开发和应用发布的道路上取得成功!

关键步骤总结:
1. 开发调试阶段:使用断点、Instruments等工具进行调试,处理内存泄漏和保留循环问题。
2. 发布准备阶段:创建Apple ID、激活双因素认证、加入开发者计划、设置Xcode、创建App ID和App Store Connect页面。
3. 发布阶段:存档和上传应用、使用TestFlight进行Beta测试、提交审核和发布应用。

最后,再次强调,开发和发布iOS应用需要耐心和细心,按照流程逐步操作,确保每个环节都不出差错。祝你开发出优秀的应用,在App Store中取得好成绩!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值