# Tools & releases

Language: en
Canonical: [Tools & releases](<https://allluckly.cn/en/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 articles

After a feature comes dependencies, builds, tests and releases. These articles preserve older tooling and debugging experiences. Use them to trace a problem while distinguishing project configuration from the local environment.

## How to read this collection

1. Connect the CocoaPods installation, publishing and static-library articles. Note the tool versions, outputs and configuration files in each step.
2. For build and test issues, compare Xcode versions and target systems before following Git fixes or compatibility notes. Older plug-in approaches especially need a support check.
3. Review, in-app purchase and release articles explain historical decisions. For an actual submission, use Apple’s current rules and your project’s real configuration.

These notes date from 2015–2017. Their examples have not been rerun for this archive update. Check the dates and version notes before applying the ideas to a current project.

## Articles in this topic

20 articles · newest first

- 2017-04-05 

  ### [Practical Automated Testing for iOS](<https://allluckly.cn/en/journal/2017-04-05-practical-automated-testing-for-ios/>)

   

  Compares unit tests with UI automation and introduces XCTest, Quick, Nimble, KIF, and Appium. It discusses waiting, stubs and mocks, command-line execution, and testable code structure as foundations for maintainable tests.

   

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

  ### [Xcode 8 and iOS 10 Compatibility Notes](<https://allluckly.cn/en/journal/2016-09-22-xcode-8-and-ios-10-compatibility-notes/>)

   

  Collects migration notes on notifications, ATS, privacy permissions, and interface changes in Xcode 8 and iOS 10. It also records issues involving logging, fonts, list performance, plugins, and xib warnings, with links to official documentation.

   

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

  ### [Adding iOS 10 Push Notification Extensions in Xcode 8](<https://allluckly.cn/en/journal/2016-09-21-adding-ios-10-push-notification-extensions-in-xcode-8/>)

   

  Records the process of adding iOS 10 notification extensions to an existing app in Xcode 8. It covers push capabilities, signing, Swift versions, architecture settings, and debugging and submission issues for Service and Content extensions.

   

  zhao0 iOS 10 · Xcode 8 · notification extensions
- 2016-06-19 

  ### [What's new in iOS 10: SiriKit](<https://allluckly.cn/en/journal/2016-06-19-what-s-new-in-ios-10-sirikit/>)

   

  Introduces SiriKit integration following WWDC 2016, from creating an Intents Extension to implementing intent handling and its interface. It explains how a spoken request is interpreted and passed to an app extension for the relevant response.

   

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

  ### [Prompting users to review an iOS app](<https://allluckly.cn/en/journal/2016-05-03-prompting-users-to-review-an-ios-app/>)

   

  Introduces the LBToAppStore review-prompt wrapper, using the app version, elapsed days and the user's previous choice to decide when to show a dialog. The response either opens the store or postpones the reminder, illustrating an early review-request workflow.

   

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

  ### [Apple's Xcode testing documentation in Chinese, part 2](<https://allluckly.cn/en/journal/2016-04-15-apple-s-xcode-testing-documentation-in-chinese-part-2/>)

   

  Continues the Chinese translation of Apple's testing documentation with code coverage, command-line testing, Xcode Server continuous integration and UI test recording. It also discusses structuring testable code and migrating from OCUnit to XCTest.

   

  许漠颜 code coverage · Xcode Server · continuous integration
- 2016-04-15 

  ### [Apple's Xcode testing documentation in Chinese, part 1](<https://allluckly.cn/en/journal/2016-04-15-apple-s-xcode-testing-documentation-in-chinese-part-1/>)

   

  A Chinese translation of earlier Apple testing documentation covering XCTest project setup, test classes and methods, the test lifecycle, performance tests and UI tests. The test navigator illustrates running cases and inspecting their results.

   

  许漠颜 XCTest · XCTestCase · unit testing
- 2016-04-04 

  ### [Publishing a library to CocoaPods](<https://allluckly.cn/en/journal/2016-04-04-publishing-a-library-to-cocoapods/>)

   

  Records the process of publishing an open-source library: preparing the GitHub project, registering with trunk, writing a podspec, checking versions and tags, validating and submitting. It also explains commonly used specification fields.

   

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

  ### [Xcode development tips from a SwiftGG discussion](<https://allluckly.cn/en/journal/2016-02-26-xcode-development-tips-from-a-swiftgg-discussion/>)

   

  Collects Xcode techniques from a SwiftGG discussion: exception, symbolic and test-failure breakpoints; inspecting and changing variables during debugging; Quick Look; and reusable code snippets.

   

  bestswifter Xcode · breakpoints · Quick Look
- 2016-02-19 

  ### [Restoring old Xcode plug-ins after a version update](<https://allluckly.cn/en/journal/2016-02-19-restoring-old-xcode-plug-ins-after-a-version-update/>)

   

  Documents historical fixes for plug-ins that stopped loading after an Xcode update or an accidental Skip Bundles selection. It checks compatibility UUIDs, edits plug-in Info.plist files and resets the loading choice.

   

  许漠颜 Xcode plug-ins · DVTPlugInCompatibilityUUIDs · Info.plist
- 2016-02-18 

  ### [Preparing an iOS app for Apple Pay](<https://allluckly.cn/en/journal/2016-02-18-preparing-an-ios-app-for-apple-pay/>)

   

  Records early Apple Pay project setup: enabling the capability, creating a Merchant ID and configuring payment-request properties. It also lists questions about country and currency codes; the demonstrated result comes from the simulator identified in the original article.

   

  Bison Apple Pay · Merchant ID · payment requests
- 2015-12-28 

  ### [Bison's collection of solutions to common Git errors](<https://allluckly.cn/en/journal/2015-12-28-bison-s-collection-of-solutions-to-common-git-errors/>)

   

  Collects index-lock errors and warnings about Git's default push behaviour, with error screenshots and the configuration commands used at the time. It supports reviewing troubleshooting by error type; inspect the current repository state before applying a command.

   

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

  ### [Integrating a Baidu Mobile SSP launch ad in one minute](<https://allluckly.cn/en/journal/2015-12-26-integrating-a-baidu-mobile-ssp-launch-ad-in-one-minute/>)

   

  Records the historical integration of Baidu Mobile SSP splash ads, from platform registration and SDK import to system dependencies, compiler options and launch-time delegate callbacks. It follows the main steps for loading an ad during app startup.

   

  Bison Baidu SSP · splash ads · BaiduMobAdSplash
- 2015-09-29 

  ### [Practical lessons from localising an iOS app](<https://allluckly.cn/en/journal/2015-09-29-practical-lessons-from-localising-an-ios-app/>)

   

  Reviews translation-file organisation, button-label length, language-region identifiers and localised image names. It focuses on how the language identifier changes in iOS 9 affected logic that detected Chinese in a multilingual project.

   

  Bison internationalisation · localisation · language-region identifiers
- 2015-07-31 

  ### [Detecting device locking in an iOS app](<https://allluckly.cn/en/journal/2015-07-31-detecting-device-locking-in-an-ios-app/>)

   

  Records SpringBoard lock-notification handling used to investigate a failure in an embedded game when the device locked. It preserves the troubleshooting approach and callback code; the conditions under which those interfaces may be used need separate verification.

   

  Bison lock notifications · SpringBoard · CFNotificationCenter
- 2015-06-10 

  ### [Packaging an iOS static library as an .a file](<https://allluckly.cn/en/journal/2015-06-10-packaging-an-ios-static-library-as-an-a-file/>)

   

  Records a workflow for building separate device and simulator static libraries in Xcode, inspecting their architectures with lipo and combining the .a files. It explains matching the target platform during testing and checking the resulting library.

   

  Bison static libraries · lipo · Xcode
- 2015-06-04 

  ### [An illustrated guide to implementing iOS in-app purchases](<https://allluckly.cn/en/journal/2015-06-04-an-illustrated-guide-to-implementing-ios-in-app-purchases/>)

   

  An early end-to-end integration guide covering agreements, in-app purchase products, sandbox accounts and client code. It follows StoreKit product requests, the payment queue, transaction-state handling and receipt validation through the setup process.

   

  Bison StoreKit · IAP · sandbox testing
- 2015-05-22 

  ### [iOS App Store rejection cases and solutions: an ongoing record](<https://allluckly.cn/en/journal/2015-05-22-ios-app-store-rejection-cases-and-solutions-an-ongoing-record/>)

   

  A collection of App Review issues involving crashes, background modes, third-party sign-in, in-app purchases and user content, with the responses used at the time. These historical rules and individual cases help identify categories of review problems.

   

  App Store · App Review · background modes
- 2015-05-20 

  ### [Installing and using CocoaPods for iOS development](<https://allluckly.cn/en/journal/2015-05-20-installing-and-using-cocoapods-for-ios-development/>)

   

  Starting with Ruby and CocoaPods installation, this article explains how to find dependencies, write a Podfile, install pods and open the generated workspace. It also records a fix for header completion, illustrating an early iOS dependency-management workflow.

   

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

  ### [Disabling and dimming third-party sign-in buttons when the app is not installed](<https://allluckly.cn/en/journal/2015-05-18-disabling-and-dimming-third-party-sign-in-buttons-when-the-app-is-not-installed/>)

   

  Uses QQ and WeChat sign-in buttons to show how installation checks can determine whether a button is hidden, disabled or dimmed. It records the interface treatment used when the corresponding third-party app was unavailable.

   

  third-party sign-in · QQ · WeChat

