# 工程工具与发布

语言：zh-CN
原文：[工程工具与发布](<https://allluckly.cn/journal/topics/tooling-release/>)
中文：[中文 HTML](<https://allluckly.cn/journal/topics/tooling-release/>)
English: [English HTML](<https://allluckly.cn/en/journal/topics/tooling-release/>)

DEVELOPMENT NOTES · 20 篇

写完功能之后，还有依赖、构建、测试和发布。这组文章保留了当年的工具使用与排错经历，适合寻找问题的来路，也提醒自己区分项目配置与机器环境。

## 怎么读这一组

1. 依赖与打包可从 CocoaPods 安装、提交代码到 CocoaPods、静态库构建串起来看，分别记录工具版本、产物和配置文件。
2. 遇到构建或测试问题，先对照 Xcode 版本与目标系统，再看 Git 错误、测试技巧和适配笔记；旧插件方案尤其需要确认支持情况。
3. 审核、内购和发布文章用于了解历史处理思路。实际提交前，以 Apple 当前规则和项目的真实配置为准。

这是 2015–2017 年的历史记录，示例未在本次整理中重新运行验证。先核对文章日期和版本说明，再决定哪些思路适合当前项目。

## 主题文章

20 篇 · 新到旧

- 2017-04-05 

  ### [iOS开发之自动化测试的那些干货](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tougao74>)

  比较单元测试和 UI 自动化的用途，介绍 XCTest、Quick、Nimble、KIF 与 Appium，讨论等待、Stub/Mock、命令行运行和可测试代码结构，帮助组织可维护的测试。

  黄文臣 XCTest · Quick · Nimble
- 2016-09-22 

  ### [iOS开发之Xcode8兼容适配iOS 10资料整理笔记](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tougao61>)

  汇总 Xcode 8 与 iOS 10 迁移中的通知、ATS、隐私权限和界面变化，记录日志、字体、列表性能、插件及 xib 警告等问题，并附相应官方资料入口。

  判若两人丶 iOS 10 · Xcode 8 · ATS
- 2016-09-21 

  ### [Xcode8开发iOS10推送通知过程](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tougao60>)

  记录在 Xcode 8 为现有应用接入 iOS 10 通知扩展的过程，集中讨论推送能力、签名、Swift 版本和架构设置，以及 Service、Content 扩展的调试与提交问题。

  zhao0 iOS 10 · Xcode 8 · 通知扩展
- 2016-06-19 

  ### [iOS10新特性之SiriKit](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao50>)

  介绍 WWDC 2016 后的 SiriKit 接入，从创建 Intents Extension 到实现意图处理和事件界面，说明语音请求如何被解析并交给应用扩展提供相应内容。

  Sindri SiriKit · Intents Extension · INExtension
- 2016-05-03 

  ### [iOS开发之诱导用户为自己的App评论](<https://allluckly.cn/aso/GoToAppStore>)

  介绍 LBToAppStore 评价提醒封装，使用应用版本、间隔天数与用户上次选择控制弹窗时机，再根据选择跳转到商店或推迟提醒，展示早期评价入口的实现思路。

  Bison LBToAppStore · App Store · UIAlertController
- 2016-04-15 

  ### [iOS开发之Xcode测试苹果官方文档翻译（下）](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao39>)

  接续 Apple 测试文档译文，介绍代码覆盖率、命令行测试、Xcode Server 持续集成和 UI 测试录制，并讨论可测试代码的组织及从 OCUnit 迁移到 XCTest。

  许漠颜 代码覆盖率 · Xcode Server · 持续集成
- 2016-04-15 

  ### [iOS开发之Xcode测试苹果官方文档翻译（上）](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao38>)

  翻译早期 Apple 测试文档，介绍 XCTest 的工程配置、测试类与方法、生命周期以及性能和界面测试，结合测试导航器说明如何运行用例和查看结果。

  许漠颜 XCTest · XCTestCase · 单元测试
- 2016-04-04 

  ### [提交代码到CocoaPods看我就够了](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao35>)

  记录将开源库发布到 CocoaPods 的步骤，包括准备 GitHub 工程、注册 trunk、编写 podspec、核对版本与标签、执行校验和提交，并解释常用配置字段。

  WzxJiang CocoaPods · podspec · trunk
- 2016-02-26 

  ### [SwiftGG交流分享Xcode开发使用技巧](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao24>)

  整理一次 SwiftGG 交流中的 Xcode 使用技巧，介绍异常、符号和测试失败断点，演示调试时查看或修改变量、使用 Quick Look，以及创建可复用代码片段。

  bestswifter Xcode · 断点 · Quick Look
- 2016-02-19 

  ### [Xcode版本更新插件失灵批量解决法](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao23>)

  针对旧版 Xcode 更新后插件无法加载，以及误选 Skip Bundles 的情况，介绍检查兼容 UUID、修改插件 Info.plist 和重置加载选择的历史处理步骤。

  许漠颜 Xcode插件 · DVTPlugInCompatibilityUUIDs · Info.plist
- 2016-02-18 

  ### [Apple Pay强势来袭，开发者应做的事情](<https://allluckly.cn/ios%E6%94%AF%E4%BB%98/Applepay>)

  记录 Apple Pay 的早期工程配置，包括开启能力、创建 Merchant ID 和设置支付请求属性，并列出国家与货币代码等疑问；演示效果来自原文注明的模拟器。

  Bison Apple Pay · Merchant ID · 支付请求
- 2015-12-28 

  ### [Biosn收集的Git常见的错误解决方式](<https://allluckly.cn/sdk/git01>)

  汇总使用 Git 时遇到的索引锁和 push 默认行为警告，列出报错画面及当时采用的配置命令。适合按错误类型回顾排查过程，执行前需确认现场状态。

  Bison Git · index.lock · push.default
- 2015-12-26 

  ### [Bison教你1分钟集成百度移动SSP启动广告](<https://allluckly.cn/sdk/baidu01>)

  记录百度移动 SSP 开屏广告的历史接入过程，从平台注册和 SDK 导入，到系统依赖、编译参数与启动代理回调，展示在应用启动阶段加载广告的主要步骤。

  Bison 百度SSP · 开屏广告 · BaiduMobAdSplash
- 2015-09-29 

  ### [iOS开发之多国语言国际化经验浅谈](<https://allluckly.cn/ios%E4%B9%8B%E5%9B%BD%E9%99%85%E5%8C%96/On-the-experience-of-the-international-experience-of-iOS>)

  总结多语言项目中翻译文件整理、按钮文字长度、语言地区代码和本地化图片命名的实际问题，重点记录 iOS 9 语言标识变化对中文判断逻辑的影响。

  Bison 国际化 · 本地化 · 语言地区代码
- 2015-07-31 

  ### [iOS开发之检测设备锁屏](<https://allluckly.cn/iOS%E5%BC%80%E5%8F%91%E4%B9%8B%E6%A3%80%E6%B5%8B%E8%AE%BE%E5%A4%87%E9%94%81%E5%B1%8F>)

  针对嵌入游戏在锁屏时出现异常的场景，记录监听 SpringBoard 锁屏通知的代码与回调处理。文章保留当时的排障思路，接口使用条件需要单独核实。

  Bison 锁屏通知 · SpringBoard · CFNotificationCenter
- 2015-06-10 

  ### [【iOS开发】打包静态库.a文件](<https://allluckly.cn/%E9%9D%99%E6%80%81%E5%BA%93/iOS%E5%BC%80%E5%8F%91%E6%89%93%E5%8C%85%E9%9D%99%E6%80%81%E5%BA%93.a%E6%96%87%E4%BB%B6>)

  记录在 Xcode 中分别构建设备和模拟器静态库，再用 lipo 查看架构并合并 .a 文件的流程，解释为何测试时需要匹配目标平台及如何检查生成结果。

  Bison 静态库 · lipo · Xcode
- 2015-06-04 

  ### [iOS开发内购全套图文教程](<https://allluckly.cn/ios%E6%94%AF%E4%BB%98/iOS%E5%BC%80%E5%8F%912015%E5%B9%B4%E6%9C%80%E6%96%B0%E5%86%85%E8%B4%AD%E6%95%99%E7%A8%8B>)

  按协议填写、内购商品创建、沙盒账号配置与客户端代码展开，展示 StoreKit 商品请求、支付队列、交易状态处理及收据验证的早期完整接入过程。

  Bison StoreKit · IAP · 沙盒测试
- 2015-05-22 

  ### [【iOS开发】iOS被拒解决方案--持续更新](<https://allluckly.cn/%E4%B8%8A%E6%9E%B6/iOS%E8%A2%AB%E6%8B%92%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E6%8C%81%E7%BB%AD%E6%9B%B4%E6%96%B0>)

  汇集应用审核中遇到的崩溃、后台模式、第三方登录、内购和用户内容等问题，并附当时的处理记录。内容反映旧审核条款与具体案例，可用于回顾问题类型。

  App Store · 应用审核 · 后台模式
- 2015-05-20 

  ### [iOS开发CocoaPods安装及使用](<https://allluckly.cn/cocoapods/CocoaPods%E5%AE%89%E8%A3%85%E5%8F%8A%E4%BD%BF%E7%94%A8>)

  从安装 Ruby 与 CocoaPods 开始，说明如何搜索依赖、编写 Podfile、执行安装并使用生成的工作区，还记录头文件补全的处理方法，适合理解早期 iOS 依赖管理流程。

  Bison CocoaPods · Podfile · Ruby
- 2015-05-18 

  ### [iOS开发第三方登录没安装对应的APP时，图标禁止点击且颜色变灰](<https://allluckly.cn/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%99%BB%E9%99%86/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%99%BB%E5%BD%95>)

  以 QQ 和微信登录按钮为例，检测设备是否安装对应应用，再决定隐藏按钮或禁用点击并置灰，记录当时第三方登录入口随安装状态调整的界面处理方式。

  第三方登录 · QQ · 微信

