āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻ†āĻŽāĻžāĻ° āĻ¨āĻžāĻŽ āĻĻāĻŋāĻŽāĻŋāĻ¤ā§āĻ°āĻŋ, āĻ†āĻŽāĻŋ āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ¤ā§‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻ• āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŋ āĻāĻŽāĻ‡āĻāĻ˛ āĻŦāĻŋāĻœā§āĻžāĻžāĻ¨. āĻŦā§‡āĻļ āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ āĻ†āĻŽāĻŋ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻžāĻŽā§āĻĒā§āĻ°āĻ¤āĻŋāĻ• āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ¸āĻ™ā§āĻ—ā§‡ āĻ•āĻžāĻœ āĻļā§‡āĻˇ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦ — āĻ¯āĻĨāĻž, āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻŸā§‡āĻ¸ā§āĻŸāĻŋāĻ‚ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• XCUITest āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ iOS āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ‡āĻ¨āĻ¸ā§āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻŸā§‡āĻ¸ā§āĻŸāĻŋāĻ‚ āĻ¸āĻšā§ˇ

āĻāĻ° āĻ†āĻ—ā§‡, āĻ†āĻŽāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§‡āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĻā§‡āĻ–ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° iOS āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹āĻ•ā§‡ āĻāĻ•āĻ‡ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻ°āĻžāĻ–āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻ†āĻŽāĻžāĻ•ā§‡ āĻ…āĻ¨ā§‡āĻ• Google āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§āĻ‡ āĻĒā§āĻ°āĻĨāĻŽāĻŦāĻžāĻ° āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ¨āĻŋ, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻŋ āĻ¯āĻžāĻ°āĻž āĻāĻ–āĻ¨āĻ“ āĻ¸āĻ‚āĻ—ā§āĻ°āĻžāĻŽ āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻ‰āĻŸā§‹āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻ•āĻŸāĻŋ iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ UI āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻĨāĻžāĻ•ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻĻāĻ¯āĻŧāĻž āĻ•āĻ°ā§‡ āĻ—ā§āĻĄ āĻ•āĻ°ā§āĻĒā§‹āĻ°ā§‡āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ā§ˇ āĻ†āĻ—ā§āĻ°āĻšā§€āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛ā§‡ āĻ¸ā§āĻŦāĻžāĻ—āĻ¤āĻŽāĨ¤

āĻ—āĻ˛ā§āĻĒā§‡, āĻ†āĻŽāĻŋ āĻ•āĻŋāĻ›ā§ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻĄā§‡āĻŸāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ - GitHub āĻāĻŦāĻ‚ CircleCI āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛āĨ¤ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ° āĻ¨āĻžāĻŽ AmazingApp, bundleID āĻšāĻ˛ com.company.amazingappāĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻŦāĻŋāĻ­ā§āĻ°āĻžāĻ¨ā§āĻ¤āĻŋ āĻ•āĻŽāĻžāĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻāĻ‡ āĻĄā§‡āĻŸāĻž āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻ›āĻŋāĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ­āĻŋāĻ¨ā§āĻ¨āĻ­āĻžāĻŦā§‡ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž āĻļā§‡āĻ¯āĻŧāĻžāĻ° āĻ•āĻ°ā§āĻ¨āĨ¤

1. āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ¨āĻŋāĻœā§‡āĻĻā§‡āĻ°

UI āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻļāĻžāĻ–āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨:

$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”

āĻ†āĻ¸ā§āĻ¨ XCode-āĻ āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋ āĻ–ā§āĻ˛āĻŋ āĻāĻŦāĻ‚ UI āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž [XCode -> File -> New -> Target -> iOS Testing Bundle] āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ, āĻāĻŸāĻŋāĻ•ā§‡ āĻ¸ā§āĻŦ-āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻžāĻŽā§‚āĻ˛āĻ• āĻ¨āĻžāĻŽ AmazingAppUITestsāĨ¤

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸā§‡āĻ° āĻŦāĻŋāĻ˛ā§āĻĄ āĻĢā§‡āĻœ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ¸ā§‹āĻ°ā§āĻ¸ - AmazingAppUITests.swift-āĻ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž - AmazingApp-āĻāĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§āĻ¨ā§ˇ

āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻ…āĻ­ā§āĻ¯āĻžāĻ¸ āĻšāĻ˛ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻ˛ā§āĻĄ āĻ…āĻĒāĻļāĻ¨āĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ¸ā§āĻ•āĻŋāĻŽā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°āĻžāĨ¤ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° UI āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ•āĻŋāĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ [XCode -> āĻĒāĻŖā§āĻ¯ -> āĻ¸ā§āĻ•āĻŋāĻŽ -> āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻ•āĻŋāĻŽ] āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻ‡ āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ‡: AmazingAppUITestsāĨ¤

āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¸ā§āĻ•āĻŋāĻŽā§‡āĻ° āĻŦāĻŋāĻ˛ā§āĻĄā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻŽā§‚āĻ˛ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻšāĻŦā§‡ - AmazingApp āĻāĻŦāĻ‚ Target UI āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž - AmazingAppUITests - āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¨āĻļāĻŸ āĻĻā§‡āĻ–ā§āĻ¨

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž UI āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻŋāĻ˛ā§āĻĄ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋāĨ¤ XCode-āĻ, āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ Info āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻ¯āĻžāĻ¨āĨ¤ "+" āĻ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ XCtestāĨ¤ āĻ•ā§‹āĻĄ āĻ¸āĻžāĻ‡āĻ¨āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ–āĻžā§āĻœāĻ¨āĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ¨āĻžāĻš āĻāĻĄāĻŧāĻžāĻ¤ā§‡ āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻŸāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡āĨ¤

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻ•āĻŽāĻĒāĻ•ā§āĻˇā§‡ āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: āĻŽā§‚āĻ˛ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨, āĻ‡āĻ‰āĻ¨āĻŋāĻŸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž (āĻ¸āĻŦ āĻĒāĻ°ā§‡, āĻ¤āĻžāĻ°āĻž āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨, āĻ¤āĻžāĻ‡ āĻ¨āĻž?) āĻāĻŦāĻ‚ āĻ˛āĻ•ā§āĻˇā§āĻ¯ UI āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ—ā§āĻ˛āĻŋ āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋā§ˇ

Target AmazingApp, āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻŸā§āĻ¯āĻžāĻŦ, āĻ•ā§‹āĻĄ āĻ¸āĻžāĻ‡āĻ¨āĻŋāĻ‚ āĻ†āĻ‡āĻĄā§‡āĻ¨ā§āĻŸāĻŋāĻŸāĻŋ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻ¯āĻžāĻ¨āĨ¤ XCtest āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, iOS āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ•ā§‹āĻĄ āĻ¸āĻžāĻ‡āĻ¨āĻŋāĻ‚ āĻ¸ā§āĻŸāĻžāĻ‡āĻ˛ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡, āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ–āĻ¨āĻ“ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ­āĻŋāĻļāĻ¨āĻŋāĻ‚ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋāĻ¨āĻŋ, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻ•āĻŸā§ āĻĒāĻ°ā§‡ āĻāĻŸāĻŋāĻ¤ā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ¯āĻžāĻŦāĨ¤

Target AmazingAppUITests-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻ‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŋ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°ā§‹āĻĄāĻžāĻ•ā§āĻŸ āĻŦāĻžāĻ¨ā§āĻĄā§‡āĻ˛ āĻ†āĻ‡āĻĄā§‡āĻ¨ā§āĻŸāĻŋāĻĢāĻžāĻ¯āĻŧāĻžāĻ° āĻ•āĻ˛āĻžāĻŽā§‡ āĻ†āĻŽāĻ°āĻž com.company.amazingappuitest āĻ˛āĻŋāĻ–āĻŋāĨ¤

2. āĻ…ā§āĻ¯āĻžāĻĒāĻ˛ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž

āĻ…ā§āĻ¯āĻžāĻĒāĻ˛ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¯āĻŧ āĻ¯āĻžāĻ¨, āĻ¸āĻžāĻ°ā§āĻŸāĻŋāĻĢāĻŋāĻ•ā§‡āĻŸ, āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€ āĻāĻŦāĻ‚ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻ‡āĻĄā§‡āĻ¨ā§āĻŸāĻŋāĻĢāĻžāĻ¯āĻŧāĻžāĻ° āĻ†āĻ‡āĻŸā§‡āĻŽā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻĒ āĻ†āĻ‡āĻĄāĻŋ āĻ•āĻ˛āĻžāĻŽā§‡ āĻ¯āĻžāĻ¨āĨ¤ AmazingAppUITests āĻāĻŦāĻ‚ bundleID com.company.amazingappuitest āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ…ā§āĻ¯āĻžāĻĒ āĻ†āĻ‡āĻĄāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ā§ˇ

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻļāĻ‚āĻ¸āĻžāĻĒāĻ¤ā§āĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸ā§āĻ¯ā§‹āĻ— āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§... āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ°āĻžāĻ¨āĻžāĻ°āĻ•ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻœāĻĄāĻŧāĻŋāĻ¤ā§ˇ āĻ¤āĻĻāĻ¨ā§āĻ¸āĻžāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ­āĻŋāĻļāĻ¨āĻŋāĻ‚ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĻā§āĻŸāĻŋ āĻŦāĻžāĻ¨ā§āĻĄāĻŋāĻ˛ āĻ†āĻ‡āĻĄāĻŋ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨ āĻšāĻšā§āĻ›āĻŋāĨ¤ āĻ¸ā§ŒāĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤, āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻŽāĻžāĻ°ā§āĻœāĻŋāĻ¤ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ†āĻ›ā§‡ - āĻ“āĻ¯āĻŧāĻžāĻ‡āĻ˛ā§āĻĄāĻ•āĻžāĻ°ā§āĻĄ āĻ…ā§āĻ¯āĻžāĻĒ āĻ†āĻ‡āĻĄāĻŋāĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ…ā§āĻ¯āĻžāĻĒ āĻ†āĻ‡āĻĄāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°āĻŋ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ…ā§āĻ¯āĻžāĻĒ āĻ†āĻ‡āĻĄāĻŋāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¨āĻļāĻŸā§‡āĻ° āĻŽāĻ¤ā§‹ āĻ“āĻ¯āĻŧāĻžāĻ‡āĻ˛ā§āĻĄāĻ•āĻžāĻ°ā§āĻĄ āĻ…ā§āĻ¯āĻžāĻĒ āĻ†āĻ‡āĻĄāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨āĨ¤

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻāĻ‡ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§‡, āĻ†āĻŽāĻ°āĻž developer.apple.com āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻļā§‡āĻˇ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ° āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ•āĻ°āĻŦ āĻ¨āĻžāĨ¤ āĻšāĻ˛ āĻ¯āĻžāĻ‡ āĻĢāĻžāĻ¸ā§āĻŸāĻ˛ā§‡āĻ¨ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻ¸āĻžāĻ‡āĻŸ āĻāĻŦāĻ‚ āĻ•āĻ­āĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻ•āĻ­āĻžāĻ° āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻŽā§āĻ¯āĻžāĻš āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻĒāĻĄāĻŧā§āĻ¨āĨ¤

āĻāĻ•āĻœāĻ¨ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ—ā§€ āĻĒāĻžāĻ āĻ• āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ āĻ¯ā§‡ āĻāĻ‡ āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻĒāĻ˛ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻāĻŦāĻ‚ āĻ—āĻŋāĻĨā§āĻŦ āĻ‰āĻ­āĻ¯āĻŧā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻĢāĻ°ā§āĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ (āĻ¯āĻĻāĻŋ āĻšāĻ āĻžā§Ž āĻāĻŽāĻ¨ āĻ•āĻŋāĻ›ā§ āĻ¨āĻž āĻĨāĻžāĻ•ā§‡) [āĻ‡āĻŽā§‡āĻ˛ āĻ¸ā§āĻ°āĻ•ā§āĻˇāĻŋāĻ¤], āĻāĻ•āĻŸāĻŋ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ†āĻ¸ā§āĻ¨, āĻāĻŸāĻŋ developer.apple.com-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ• āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§āĻ¨ā§ˇ āĻāĻ°āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻ—āĻŋāĻĨā§āĻŦ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĻāĻŋāĻ‡ āĻāĻŦāĻ‚ AmazingAppMatch āĻāĻ° āĻŽāĻ¤ā§‹ āĻāĻ•āĻŸāĻŋ āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋāĨ¤

3. āĻĢāĻžāĻ¸ā§āĻŸāĻ˛ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻŽā§āĻ¯āĻžāĻš āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž

āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛ āĻ–ā§āĻ˛ā§āĻ¨, āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡ āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĢāĻžāĻ¸ā§āĻŸāĻ˛ā§‡āĻ¨ āĻļā§āĻ°ā§ āĻ•āĻ°ā§āĻ¨ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛. āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°

$ fastlane init

āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻ˛āĻž āĻšāĻŦā§‡āĨ¤ āĻšāĻ¤ā§āĻ°ā§āĻĨ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ - āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¸ā§‡āĻŸāĻ†āĻĒāĨ¤

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻĢāĻžāĻ¸ā§āĻŸāĻ˛ā§‡āĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻžāĻ¤ā§‡ āĻĻā§āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - āĻ…ā§āĻ¯āĻžāĻĒāĻĢāĻžāĻ‡āĻ˛ āĻāĻŦāĻ‚ āĻĢāĻžāĻ¸ā§āĻŸāĻĢāĻžāĻ‡āĻ˛āĨ¤ āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡, āĻ†āĻŽāĻ°āĻž āĻ…ā§āĻ¯āĻžāĻĒāĻĢāĻžāĻ‡āĻ˛ā§‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ° āĻĄā§‡āĻŸāĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻĢāĻžāĻ¸ā§āĻŸāĻĢāĻžāĻ‡āĻ˛ā§‡ āĻšāĻžāĻ•āĻ°āĻŋ āĻ˛āĻŋāĻ–āĻŋ, āĻ¯āĻžāĻ•ā§‡ āĻĢāĻžāĻ¸ā§āĻŸāĻ˛ā§‡āĻ¨ āĻĒāĻ°āĻŋāĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻ˛ā§‡āĻ¨ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻŽāĻŋ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻĒāĻĄāĻŧāĻžāĻ° āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ•āĻ°āĻ›āĻŋ: āĻ¸āĻŽāĻ¯āĻŧ, два.

āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻžāĻ ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ•ā§‡ āĻ…ā§āĻ¯āĻžāĻĒāĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ–ā§āĻ˛ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĢāĻ°ā§āĻŽā§‡ āĻ†āĻ¨ā§āĻ¨:

app_identifier "com.company.amazingapp"       # Bundle ID
apple_dev_portal_id "[email protected]"  # ХОСдаĐŊĐŊŅ‹Đš иĐŊŅ„Ņ€Đ°ŅŅ‚Ņ€ŅƒĐēŅ‚ŅƒŅ€ĐŊŅ‹Đš Đ°ĐēĐēĐ°ŅƒĐŊŅ‚, иĐŧĐĩŅŽŅ‰Đ¸Đš ĐŋŅ€Đ°Đ˛Đž ĐŊĐ° Ņ€ĐĩĐ´Đ°ĐēŅ‚иŅ€ĐžĐ˛Đ°ĐŊиĐĩ iOS ĐŋŅ€ĐžĐĩĐēŅ‚Đ° в Apple Developer Program.
team_id "LSDY3IFJAY9" # Your Developer Portal Team ID

āĻ†āĻŽāĻ°āĻž āĻŸāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛ā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸āĻŋ āĻāĻŦāĻ‚ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ āĻ†āĻŽāĻ°āĻž āĻŽā§āĻ¯āĻžāĻš āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋāĨ¤

$ fastlane match init
$ fastlane match development

āĻāĻ°āĻĒāĻ°ā§‡, āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ•āĻ°āĻž āĻĄā§‡āĻŸāĻž āĻ˛āĻŋāĻ–ā§āĻ¨ - āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛, āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ, āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤

āĻāĻŸāĻŋ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻāĻŽāĻ¨ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ: āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ āĻĒā§āĻ°āĻĨāĻŽ āĻŽā§āĻ¯āĻžāĻš āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻŦā§‡āĻ¨, āĻ¤āĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛āĻŸāĻŋ āĻĄāĻŋāĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻŦāĻ˛āĻž āĻšāĻŦā§‡āĨ¤ āĻāĻ‡ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄāĻŸāĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻ–ā§āĻŦāĻ‡ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ; CI āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻŸāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡!

āĻĢāĻžāĻ¸ā§āĻŸāĻ˛ā§‡āĻ¨ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ - āĻŽā§āĻ¯āĻžāĻšāĻĢāĻžāĻ‡āĻ˛āĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻžāĻ ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ•ā§‡ āĻāĻŸāĻŋ āĻ–ā§āĻ˛ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ° āĻŽāĻ¤ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°ā§āĻ¨:

git_url("https://github.com/YourCompany/AmazingAppMatch") #ХОСдаĐŊĐŊŅ‹Đš ĐŋŅ€Đ¸Đ˛Đ°Ņ‚ĐŊŅ‹Đš Ņ€ĐĩĐŋОСиŅ‚ĐžŅ€Đ¸Đš Đ´ĐģŅ Ņ…Ņ€Đ°ĐŊĐĩĐŊиŅ ŅĐĩŅ€Ņ‚иŅ„иĐēĐ°Ņ‚Ов и ĐŋŅ€ĐžŅ„Đ°ĐšĐģОв.
type("development") # The default type, can be: appstore, adhoc, enterprise or development
app_identifier("com.company.amazingapp")
username("[email protected]") # Your Infrastructure account Apple Developer Portal username

āĻ†āĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡ āĻ•ā§āĻ°ā§āĻ¯āĻžāĻļāĻ˛āĻŋāĻŸāĻŋāĻ•ā§āĻ¸ āĻāĻŦāĻ‚/āĻ…āĻĨāĻŦāĻž āĻ…ā§āĻ¯āĻžāĻĒāĻ¸ā§āĻŸā§‹āĻ°ā§‡ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻ˛ā§āĻĄā§‡ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ•āĻ°āĻ¤ā§‡, āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻŦāĻžāĻ¨ā§āĻĄā§‡āĻ˛ āĻ†āĻ‡āĻĄāĻŋāĻ¤ā§‡ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻŽā§āĻ¯āĻžāĻš āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¤āĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻ āĻŋāĻ• āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻŋāĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽāĻ¨ā§‡ āĻ†āĻ›ā§‡, āĻ†āĻŽāĻ°āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻŦāĻŋāĻ˛ā§āĻĄā§‡ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻ“āĻ¯āĻŧāĻžāĻ‡āĻ˛ā§āĻĄāĻ•āĻžāĻ°ā§āĻĄ āĻ†āĻ‡āĻĄāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻĢāĻžāĻ¸ā§āĻŸāĻĢāĻžāĻ‡āĻ˛ āĻ–ā§āĻ˛ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ˛ā§‡āĻ¨ āĻ˛āĻŋāĻ–ā§āĻ¨:

lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"  # ŅĐžĐˇĐ´Đ°ĐĩĐŧ ĐžŅ‚Đ´ĐĩĐģŅŒĐŊŅ‹Đš ĐąŅ€Đ°ĐŊŅ‡ Đ´ĐģŅ development ŅĐĩŅ€Ņ‚иŅ„иĐēĐ°Ņ‚Đ° Đ´ĐģŅ ĐŋОдĐŋиŅĐ¸ Ņ‚ĐĩŅŅ‚ОвОК ŅĐąĐžŅ€Đēи.
    )

end

āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻŸāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛ā§‡ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°ā§āĻ¨

fastlane testing_build_for_firebase

āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻĻā§‡āĻ–āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĢāĻžāĻ¸ā§āĻŸāĻ˛ā§‡āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻļāĻ‚āĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡ āĻ°āĻžāĻ–ā§‡āĨ¤ āĻĻāĻžāĻ°ā§āĻŖ!

XCode āĻ–ā§āĻ˛ā§āĻ¨āĨ¤ āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ Match Development com.company āĻĢāĻ°ā§āĻŽā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĒā§āĻ°āĻ­āĻŋāĻļāĻ¨āĻŋāĻ‚ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ āĻ†āĻ›ā§‡āĨ¤

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻāĻŸāĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ˛ā§‡āĻ¨ āĻ¯ā§‹āĻ— āĻ…āĻŦāĻļā§‡āĻˇ. āĻšāĻ˛ āĻ¯āĻžāĻ‡ āĻ­āĻžāĻ¨ā§āĻĄāĻžāĻ° āĻĢāĻžāĻ¸ā§āĻŸāĻ˛ā§‡āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¯āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻāĻ•ā§āĻ¸āĻĒā§‹āĻ°ā§āĻŸ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻž āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤

āĻ†āĻ¸āĻ˛ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĨā§‡āĻ•ā§‡ āĻ•āĻĒāĻŋ-āĻĒā§‡āĻ¸ā§āĻŸ āĻ•āĻ°āĻž āĻ¯āĻžāĻ• āĻ¯āĻžāĻ¤ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ˛ā§‡āĻ¨ āĻŸā§‡āĻ¸ā§āĻŸāĻŋāĻ‚_āĻŦāĻŋāĻ˛ā§āĻĄ_āĻĢāĻ°_āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸āĻŸāĻŋ āĻāĻ­āĻžāĻŦā§‡ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:


 lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"
    )

    scan(
      scheme: 'AmazingAppUITests',      # UI Test scheme
      clean: true,                        # Recommended: This would ensure the build would not include unnecessary files
      skip_detect_devices: true,          # Required
      build_for_testing: true,            # Required
      sdk: 'iphoneos',                    # Required
      should_zip_build_products: true,     # Must be true to set the correct format for Firebase Test Lab
    )

    firebase_test_lab_ios_xctest(
      gcp_project: 'AmazingAppUITests', # Your Google Cloud project name (Đē ŅŅ‚ОК ŅŅ‚Ņ€ĐžŅ‡ĐēĐĩ вĐĩŅ€ĐŊĐĩĐŧŅŅ ĐŋОСĐļĐĩ)
      devices: [                          # Device(s) to run tests on
        {
          ios_model_id: 'iphonex',        # Device model ID, see gcloud command above
          ios_version_id: '12.0',         # iOS version ID, see gcloud command above
          locale: 'en_US',                # Optional: default to en_US if not set
          orientation: 'portrait'         # Optional: default to portrait if not set
        }
      ]
    )

  end

CircleCI-āĻ āĻĢāĻžāĻ¸ā§āĻŸāĻ˛ā§‡āĻ¨ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¤āĻĨā§āĻ¯ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻŋ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻĒāĻĄāĻŧāĻžāĻ° āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ•āĻ°āĻ›āĻŋ āĻ¸āĻŽāĻ¯āĻŧ два.

āĻ†āĻŽāĻžāĻĻā§‡āĻ° config.yml āĻ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻžāĻœ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻ­ā§āĻ˛āĻŦā§‡āĻ¨ āĻ¨āĻž:

build-for-firebase-test-lab:
   macos:
     xcode: "10.1.0"   
   working_directory: ~/project
   shell: /bin/bash --login -o pipefail
   steps:
     - checkout
     - attach_workspace:
         at: ~/project
     - run: sudo bundle install     # ОйĐŊОвĐģŅĐĩĐŧ СавиŅĐ¸ĐŧĐžŅŅ‚и
     - run:
         name: install gcloud-sdk   # ĐŊĐ° mac ĐŧĐ°ŅˆĐ¸ĐŊŅƒ ĐŊĐĩОйŅ…ОдиĐŧĐž ŅƒŅŅ‚Đ°ĐŊОвиŅ‚ŅŒ gcloud
         command: |
           ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null
           brew cask install google-cloud-sdk
     - run:
         name: build app for testing
         command: fastlane testing_build_for_firebase  # СаĐŋŅƒŅĐēĐ°ĐĩĐŧ lane ŅĐąĐžŅ€Đēи и ĐžŅ‚ĐŋŅ€Đ°Đ˛Đēи в firebase

4. āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŸā§‡āĻ¸ā§āĻŸ āĻŦā§‡āĻžā§āĻš āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻŋ? Firebase āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ•āĻŋ āĻœāĻ¨ā§āĻ¯ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¤āĻž āĻ¨āĻŋāĻšā§‡ āĻ¨ā§‡āĻŽā§‡ āĻ¯āĻžāĻ•āĨ¤

āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻĒāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡āĻ° āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ā§‡ Firebase āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ…āĻĨāĻŦāĻž āĻšāĻ¯āĻŧāĻ¤ āĻāĻ•ā§‡āĻŦāĻžāĻ°ā§‡āĻ‡ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ•ā§‡āĻŦāĻžāĻ°ā§‡ āĻ•ā§‹āĻ¨ āĻŽā§ŒāĻ˛āĻŋāĻ• āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻ¨ā§‡āĻ‡, āĻ•āĻžāĻ°āĻŖ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻ°āĻž āĻāĻ• āĻŦāĻ›āĻ°ā§‡āĻ° āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ (āĻ āĻžāĻ¨ā§āĻĄāĻž, āĻ¤āĻžāĻ‡ āĻ¨āĻž?)

āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸā§‡ āĻ˛āĻ— āĻ‡āĻ¨ āĻ•āĻ°āĻŋ (āĻŦāĻž āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨, āĻāĻŸāĻž āĻ•ā§‹āĻ¨ āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ° āĻ¨āĻž), āĻāĻŦāĻ‚ āĻ¯āĻžāĻ¨ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ āĻĒā§ƒāĻˇā§āĻ āĻž. AmazingAppUITests āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ā§ˇ

āĻāĻŸāĻŋ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻāĻŽāĻ¨ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ: āĻĢāĻžāĻ¸ā§āĻŸāĻĢāĻžāĻ‡āĻ˛ āĻ‡āĻ¨ āĻ˛ā§‡āĻ¨ā§‡ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸_āĻŸā§‡āĻ¸ā§āĻŸ_āĻ˛ā§āĻ¯āĻžāĻŦ_āĻ†āĻ‡āĻ“āĻ¸_xctest āĻāĻ° āĻ†āĻ—ā§‡āĻ° āĻ§āĻžāĻĒā§‡ gcp_project āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°āĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¨āĻžāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§‡āĻļ āĻ­āĻžāĻ˛ āĻ¸ā§āĻ¯ā§āĻŸ.

āĻŸā§āĻ¯āĻžāĻŦ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž, āĻāĻ•āĻ‡ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°ā§āĻ¨ āĻœāĻŋāĻ•ā§āĻ˛āĻžāĻ‰āĻĄ - āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ— gcloud āĻ•āĻ¨āĻ¸ā§‹āĻ˛ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ˜āĻŸā§‡āĨ¤

Google āĻāĻ• āĻŦāĻ›āĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ $300 āĻĻāĻŋāĻšā§āĻ›ā§‡, āĻ¯āĻž āĻ…āĻŸā§‹āĻŸā§‡āĻ¸ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§‡āĻ•ā§āĻˇāĻŋāĻ¤ā§‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻŸāĻŋāĻ° āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻāĻ• āĻŦāĻ›āĻ°ā§‡āĻ° āĻ¸āĻŽāĻžāĻ¨āĨ¤ āĻ†āĻŽāĻ°āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…āĻ°ā§āĻĨāĻĒā§āĻ°āĻĻāĻžāĻ¨ā§‡āĻ° āĻ¤āĻĨā§āĻ¯ āĻ˛āĻŋāĻ–āĻŋ, $1 āĻŸā§‡āĻ¸ā§āĻŸ āĻĄā§‡āĻŦāĻŋāĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸā§‡ $300 āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻŋāĨ¤ āĻāĻ• āĻŦāĻ›āĻ° āĻĒāĻ°ā§‡, āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡āĻ° āĻŸā§āĻ¯āĻžāĻ°āĻŋāĻĢ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻŦā§‡, āĻ¤āĻžāĻ‡ āĻ…āĻ°ā§āĻĨā§‡āĻ° āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻ•ā§āĻˇāĻ¤āĻŋāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ•āĻ°āĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡āĨ¤

āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŸā§āĻ¯āĻžāĻŦā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻŦā§āĻ˛ā§‡āĻœ āĻŸā§āĻ¯āĻžāĻ°āĻŋāĻĢ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻŋ - āĻāĻ–āĻ¨ āĻ¸ā§€āĻŽāĻž āĻ…āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ•āĻ°āĻ˛ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻĻāĻŋāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

gcloud āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° Firebase āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, "āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ" āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŽā§‡āĻ¨ā§ āĻ†āĻ‡āĻŸā§‡āĻŽāĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻŸā§‡āĻ¸ā§āĻŸāĻŋāĻ‚ API āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻŸā§āĻ˛āĻ¸ āĻĢāĻ˛āĻžāĻĢāĻ˛ API āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨āĨ¤

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻ¤āĻžāĻ°āĻĒāĻ° āĻŽā§‡āĻ¨ā§ āĻ†āĻ‡āĻŸā§‡āĻŽ "IAM āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ¨" āĻ¯āĻžāĻ¨ -> āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ -> āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ…āĻ§āĻŋāĻ•āĻžāĻ° āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻŋāĨ¤

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

JSON āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻāĻ•āĻŸāĻŋ API āĻ•ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸā§ āĻĒāĻ°ā§‡ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž JSON āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻžāĻ¤āĻ¤ āĻ†āĻŽāĻ°āĻž āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦ āĻ¸ā§‡āĻŸāĻ†āĻĒ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻŦāĨ¤

5. āĻ¸āĻžāĻ°ā§āĻ•ā§‡āĻ˛āĻ¸āĻŋāĻ†āĻ‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž

āĻāĻ•āĻŸāĻŋ āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ¸āĻ™ā§āĻ—āĻ¤ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ‰āĻ āĻ›ā§‡ - āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ•āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡? āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦāĻŋāĻ˛ā§āĻĄ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡āĻ° āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻ‚āĻŦā§‡āĻĻāĻ¨āĻļā§€āĻ˛ āĻĄā§‡āĻŸāĻž āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻŦā§‡āĨ¤ CircleCI āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ā§‡, āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ° āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨

āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ°ā§āĻŽā§‡āĻ¨ā§āĻŸāĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: iOS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ
āĻāĻŦāĻ‚ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°ā§āĻ¨:

  • āĻ•ā§€: GOOGLE_APPLICATION_CREDENTIALSā§ˇ
    āĻŽāĻžāĻ¨: gcloud āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ•ā§€-āĻāĻ° json āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§
  • āĻ•ā§€: MATCH_PASSWORD
    āĻŽāĻžāĻ¨: āĻ¸āĻžāĻ°ā§āĻŸāĻŋāĻĢāĻŋāĻ•ā§‡āĻŸ āĻ¸āĻš āĻ—āĻŋāĻĨā§āĻŦ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻĄāĻŋāĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ
  • āĻ•ā§€: FASTLANE_PASSWORD
    āĻŽāĻžāĻ¨: āĻ…ā§āĻ¯āĻžāĻĒāĻ˛ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° āĻĒā§‹āĻ°ā§āĻŸāĻžāĻ˛ āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ

āĻ†āĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŋ, āĻāĻ•āĻŸāĻŋ PR āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§‹āĻšāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĻāĻ˛ā§‡āĻ° āĻ¨ā§‡āĻ¤ā§ƒāĻ¤ā§āĻŦā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻĒāĻžāĻ āĻžāĻ‡āĨ¤

āĻĢāĻ˛āĻžāĻĢāĻ˛

āĻāĻ‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻ°āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡āĻ° āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¨ā§‡ āĻ­āĻŋāĻĄāĻŋāĻ“ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛, āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§€āĻ˛ āĻ•āĻžāĻœā§‡āĻ° āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡, āĻ†āĻŽāĻŋ iPhone X āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡āĻ° āĻŽāĻĄā§‡āĻ˛āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĢāĻžāĻ°ā§āĻŽāĻŸāĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŽāĻĄā§‡āĻ˛ āĻāĻŦāĻ‚ iOS āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ¸āĻ‚āĻŽāĻŋāĻļā§āĻ°āĻŖ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽā§ƒāĻĻā§āĻ§ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ…āĻ‚āĻļāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§‡āĻĄ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§‡āĻ¸ āĻŸā§‡āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻŦā§‡āĻ° āĻ§āĻžāĻĒā§‡ āĻ§āĻžāĻĒā§‡ āĻ¸ā§‡āĻŸāĻ†āĻĒā§‡ āĻ¨āĻŋāĻŦā§‡āĻĻāĻŋāĻ¤ āĻšāĻŦā§‡āĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨