์ด์ ํฌ์คํ
ํฌ์คํ ํ ๊ฑด ๋ง์๋ฐ, ๋๋์ด ์์๋ ์๋ก ์ฐ๋๊ฒ ๋์์ง, ์๋๋ฉด ์ด๊ฒ์ฒ๋ผ ์์ํ๊ฒ์ ๋๋ด๊ณ ์ฐ๋๊ฒ ์ข์์ง ๋ชจ๋ฅด๊ฒ ๋ค. ๋ญ๊ฐ ์ฝ์๋๋ ์์ฐจ์ ์ธ๊ฒ ์ข์๋ฏ ํ๋ฐ, ๋๋์ด ์์๋ ๋ฐ๋ก ๋ชป์ฐ๋ ๊น์๋ ๋๋์ด ์๋ค. ์ก๋ด ๋.
Lane์ ๋ํ์ฌ
FastLane์ ๊ฝ์ Lane์ด ์๋๊น ํ๋ ์๊ฐ์ด ๋ ๋ค. FastLane์ ์ฅ์ ์ Xcode์์ ์ฌ๋ฌ๋ฒ ํด๋ฆญ์ ์ฌ๋ฌ๋ฒ ํด์ผํ๋ ๋ถ๋ถ๋ค์ ๋ช ๋ น์ด ํ๋๋ก ํด๊ฒฐํด์ฃผ๋ ์ ์ธ๋ฏ ํ๋ค.
๊ทธ๋ฆฌ๊ณ , ๊ทธ ๋จ์ํ ๊ณผ์ ๋ง์ ๋ ํ๋ฒ์ ๋ฌถ์ด์ฃผ๋ Lane
, ๊ทธ๋์ ๊ฝ์ด๋ผ ์นญํด๋ณด์๋ค.
๋ช
๋ น์ด ๋ช๊ฐ์ง๋ฅผ ๋ณด์
- Derived ํ์ผ ์ ๊ฑฐ
fastlane action clear_derived_data
- IPA ์ถ์ถํ๊ธฐ
fastlane gym
Derived ์ ๊ฑฐ
๊ด๋ จ์ ๊ฒฝ์ฐ, ๊ฐ๋ ๋น๋์ ๋ฌธ์ ๊ฐ ์๊ธธ์ ์ฌ๊ธฐ ํ์ผ์ ์ง์์ฃผ๋ฉด ํด๊ฒฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋น๋์ ๊ณ์ ์์ฑ๋๊ธฐ ๋๋ฌธ์ ์ธ์ ๋ ์ง์๋ ๋๋ ํ์ผ! IPA ์ถ์ถ
์ TestFlight๋ฅผ ์์ด๋ค๋ฉด ์ฌ๋ด ํ
์คํธ์ฉ์ผ๋ก ํ์๋ก ๋ฝ์๋๋ ๋ถ๋ค์ด ๋ง์๊ฑฐ๋ผ ์๊ฐ๋๋ค. ๋ช
๋ น์ด ํ๋๋ก ์์ฝ๊ฒ ์ถ์ถ! (IPA ์ถ์ถ์ ๊ฒฝ์ฐ dSYM ํ์ผ๋ ๊ฐ์ด ๋์จ๋ค.)
๋ ๋ช
๋ น์ด๋ค ์์ฃผ ์ข์ ๋ช
๋ น์ด์ด๋ค. ๊ทธ๋ ์ง๋ง ์ฌ๋์ ์ธ์ ๋ ๊ท์ฐฎ์ ์์
ํ๋๋ผ๋ ์ค์ด๋ ค๋๊ฒ ๋ถ๋ช
ํ๋ค. ์์ ๊ฐ์ด IPA ์ถ์ถ
์ ํ์ ๊ฒฝ์ฐ Clean
๊ณผ Derived ์ ๊ฑฐ
๋ฅผ ๊ฐ์ด ํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ํ์ค ํ์ค ์
๋ ฅํ๋๊ฒ๋ ๊ท์ฐฎ์๋๋ณด๋ค. ๊ทธ๋์ ์ฌ๋ฌ๊ฐ์ง ๋ช
๋ น์ด๋ฅผ ํ๋ฒ์ ์คํํ๊ณ ์ถ์๋๊ฑธ๊น?
๊ทธ๋์ Lane
์ด๋ผ๋ ๊ฒ์ด ๋์จ๋ฏ ํ๋ค.
Lane ์์ฑํ๊ธฐ
์ด์ ํฌ์คํ
๋ด์ฉํด fastlane init
์ ํ๋ค๋ฉด, ํด๋น ํ๋ก์ ํธ ํด๋๋ด์ fastlane
์ด๋ผ๋ ํด๋๊ฐ ์์ผ๋ฉฐ, ๊ทธ์์ Fastfile
์ด๋ ํ์ผ์ด ์กด์ฌํ๋ค. ๋ด์ฉ์ ์๋์ ๊ฐ๋ค.
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:ios)
platform :ios do
desc "Description of what the lane does"
lane :custom_lane do
# add actions here: https://docs.fastlane.tools/actions
end
end
(#) ๋ถ๋ถ์ ํ๋ฒ์ฏค ์ฝ์ด๋ณด๋ฉด ๋๊ณ ,
์ค์ํ ๋ถ๋ถ์ ์ฌ๊ธฐ๋ค.
desc "Description of what the lane does"
lane :custom_lane do
# add actions here: https://docs.fastlane.tools/actions
end
์ด๊ฒ์ด lane
์ ๊ธฐ๋ณธ ํ์ด๋ผ ๋ณด๋ฉด ๋๊ณ , ๊ฐ ์ค๋ช
์ ์๋์ ๊ฐ๋ค.
- desc: lane์ ๋ํ ์ค๋ช .
- custom_lane: lane๋ฅผ ์คํ์ํฌ ๋ช ๋ น์ด.
- do ~ end: ์ด lane์ผ๋ก ์ธํด ์คํ๋ ๋ช ๋ น์ด๋ค์ ์ ์.
์์ ์๋ฅผ ๋ค์๋ ๋ช
๋ น์ด ๋๊ฐ๋ฅผ ์ด์ฉํ์ฌ lane
์ ์์ฑํด๋ณด์
desc "Test Lane"
lane :test_lane do
clear_derived_data
gym
end
์ด๋ ๊ฒํ๋ฉด ์์ฑ์๋ฃ!
๊ทธ ํ์ ์๋ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ๋๋ค.
fastlane test_lane
๊ทธ๋ผ ์ test_lane
๋ด์ ๋ช
๋ น์ด๋ค์ด ์์ฐจ์ ์ผ๋ก ์งํ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ, ์ฌ๊ธฐ์ ๋๋๋ฉด ์์ฌ์ธ๊ฒ์ด๋ค. gym(์์นด์ด๋ธ) ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ ์ต์ ์ ์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ํ์ํ๋ค.
์๋ฅผ ๋ค๋ฉด ์ธ์ฆ์๋ฅผ ์ ํ(Distribution/Adhoc/Development)ํด์ผํ๋ ๊ฒฝ์ฐ๋ ํ์ํ๋ฉฐ, ์์นด์ด๋ธ ์ ์ ๋น๋ ํด๋ฆฐ์ ํ์ํ๊ธฐ์ ์ด๋ฌํ ๋ช ๋ น์ด๋ค์ ๋ํ ์ต์ ๋ค์ด ํ์ํ๋ค.
Lane ๋ช ๋ น์ด์ ์ต์ ์ฃผ๊ธฐ
์ต์ ์ฃผ๋๊ฒ์ ๊ฐ๋จํ๋ค. ํด๋น ๋ช ๋ น์ด ๋ค์ ๊ดํธ()๋ฅผ ์ด์ด ์ฃผ๊ณ ์ ์ผ๋ฉด ๋๋ค.
desc "Test Lane"
lane :test_lane do
clear_derived_data
gym(
scheme: "Foo",
export_method: "ad-hoc",
clean: true,
output_directory: "path/to/dir"
)
end
gym
๋ค์ ๊ดํธ๋ฅผ ์ด์ด์คฌ๊ณ , ๊ทธ ์์ ์ต์
๋ค์ ๋์ดํ๋ค.
- scheme: ํด๋น ํ๋ก์ ํธ์ ํ๊ฒ์ ์ค์ ํด์ค๋ค. (ํ workspace์์ ์ฌ๋ฌ ์ฑ์ด ์์ ๊ฒฝ์ฐ ํ์ํ๋ค.)
- export_method: ์ธ์ฆ์ ์ต์ ์ฃผ๋ ๋ถ๋ถ์ด๋ค. (์ข ๋ฅ: app-store, ad-hoc, package, enterprise, development, developer-id)
- clean: ๋น๋ ํด๋ฆฐ ์ฌ๋ถ์ด๋ค, true or false ์ฃผ๋ฉด ๋๋ค.
- output_directory: ๊ฒฐ๊ณผ๋ฌผ๋ค์ ์ ์ ํ ์์น๋ฅผ ์ ํ ํด์ฃผ๋ ๊ฐ์ด๋ค. (์์ ์ผ๋ฉด ํด๋น ํ๋ก์ ํธ ํด๋)
PS.
๋ง์ง๋ง ๋ถ๋ถ์ฒ๋ผ ์ต์
์ด ์๊ธฐ๋ฉด, ์๊ฐ๋ณด๋ค? ์ค์ด ๊ธธ์ด์ง๋ค. ์ธ์ฐ๊ธฐ๋ ํ๋ค๋ฉฐ, ํ๋๊ฐ ์๋๋ผ ์ฌ๋ฌ๊ฒ ์๊ธธ์ ์๋ค. ํ์ง๋ง lane
๋์ ๋ฏธ๋ฆฌ ์
ํ
๋ง ํด๋๋ค๋ฉด, ๋จ 1์ค์ ๋ช
๋ น์ด๋ก ๋๋ผ ์ ์๋ค.
์ฌ๋์ผ๋ก ์๋ฆผ๋ ์ค ์ ์๊ณ , ์์์ ์คํฌ๋ฆฐ์ท๋ ์ฐ์ด์ฃผ๊ณ , ์ถ์ถ๋ ํด์ฃผ๊ณ , ์ ๋ก๋๋ ํด์ฃผ๊ณ , ์ธ์ฆ์ ๊ด๋ฆฌ๋ถํฐ ์์ฑ๊น์ง ํด์ฃผ๋ ์์๋๋ฉด ์ข์ ๋๊ตฌ์์ ํ์คํ๋ฏํ๋ค. ๋์ค์ ๊ณ ๊ธํธ๋ ํฌ์คํ ํด์ผ๊ฒ ๋ค.
์ด๊ฑธ๋ก fastlane์ ์ผ๋จ ๋!