[Contents]
- SandBox ?
- SandBox ๊ตฌ์กฐ
- Bundle Container
- Data Container
- Document
- Library
- tmp
- iCloud Container
1. SandBox ?
์ฑ์ ์๋ก ์ค์นํ์ ๋, ๊ฐํน ์๋์ ๊ฐ์ด ์ ๊ทผ ๊ถํ์ ํ์ฉํด๋ฌ๋ผ๋ Alert์ ๋ณธ ์ ์ด ์์ ๊ฒ์ด๋ค.
์ด๋ฌํ ๊ณผ์ ์ด ๊ฐ ์ฑ๋ณ๋ก ๋ณ๋๋ก ์ํ๋๋๋ฐ,
๊ฐ ์ฑ์ด ํน์ ๋ฐ์ดํฐ๋ ํ๋์จ์ด์ ์ ๊ทผํ๋ ค๋ฉด *๊ถํ (Permission)*์ ์์ฒญํด์ผ ํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์น์ธํด์ผ๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ App Sandbox๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ, ๊ฐ๋ฐ์๋ ์ ํ์์ ์ ๊ณตํ๋ ๊ถํ๊ณผ ์ ๊ทผ ๋ฒ์ ๋ด์์ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ค.
์ฆ, ๊ฐ๊ฐ์ ์ฑ๋ง๋ค ๊ณ ์ ํ ์คํ ํ๊ฒฝ์ด ์ ๊ณต๋๋ฉฐ, ์ฑ์ ์ด ํ๊ฒฝ ์ธ๋ถ์ ์์คํ ํ์ผ์ด๋ ๋ค๋ฅธ ์ฑ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค.
๋ฐ๋ผ์, ์์ ๊ฐ์ด App Sandbox์ ์ธ๋ถ์ ์๋ ๋ฐ์ดํฐ ๋ฐ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ค๋ฉด Sandbox ์ ์ฑ ์ ๋ฐ๋ผ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌ๋ฐ์์ผ ํ๋ ๊ฒ์ด๊ณ , Android์ ๊ฐ์ด USB ๊ผฝ์๋ง์ ํ์ผ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ ๋ถํธํจ์ ์ด์ ๊ฐ ๋๋ค.
์ฆ, SandBox๋ ํ์ผ, ํ๊ฒฝ์ค์ , ๋คํธ์ํฌ ๋ฆฌ์์ค, ํ๋์จ์ด์ ๋ํ ์ฑ์ ์ ๊ทผ์ ์ ํํ๋ ์ธ๋ถํ๋ ์ ์ด ์งํฉ์ด๋ฉฐ,
iOS๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ฐ๊ฐ์ ์ฑ์ด ํ๋์ SandBoxํ ๋์ด ์๋ค.
2. SandBox ๊ตฌ์กฐ
์๋ก์ด ์ฑ์ด ๋๋ฐ์ด์ค ๋ด์ ์ค์น๋๋ ๋์ ์ธ์คํจ๋ฌ๋ ํด๋น ์ฑ์ Sandbox ๋ด์ ์ฌ๋ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , ๊ฐ๊ฐ์ ์ปจํ ์ด๋๋ ๊ฐ์์ ์ญํ ์ด ์กด์ฌํ๋ค.
์๋ ๊ทธ๋ฆผ์ ์ฑ์ ์๋๋ฐ์ค ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ด๋ค. ๋ณด์์ ์ํด iOS ์ฑ๊ณผ ํ์ผ ์์คํ ์ ์ํธ ์์ฉ์ ์ฑ์ sandbox ๋๋ ํ ๋ฆฌ์์๋ ๋๋ ํ ๋ฆฌ๋ก ์ ํ๋๋ค.
์ด๋ฌํ ๊ตฌ์กฐ๋ iOS์์ ์ฑ ๊ตฌ๋์ ํ์ํ ํ์ผ๋ค์ ์ ์ฅํด ๋๋ ๊ตฌ์กฐ๋ก, ์์์ ์ผ๋ก ์ ์ ๋ค์ด ์ ๊ทผ, ์์ฑ, ํธ์ง ๋ถ๊ฐํ๋ค.
SandBox๋ Bundle Container, Data Container, iCloud Container ๋ก ๋๋์ด์ ธ ์๊ณ , ์ฝ๋๋ก ๊ฐ Container ๊ฒฝ๋ก ํ์ธ ๊ฐ๋ฅํ๋ค.
๊ฐ Container ์ ๋ํ ์ค๋ช ์ ์๋์~
// ์ฑ ์ค์น ๊ฒฝ๋ก
print(NSHomeDirectory())
// tmp directory
let tmpDirURL = FileManager.default.temporaryDirectory
// library directory
let LibDirURL = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask).first
// document directory
let DocDirURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
[๊ฒฐ๊ณผ]
1) ์๋ฎฌ๋ ์ดํฐ
- ์ค์น ๊ฒฝ๋ก ํ์ธ
- container ๊ฒฝ๋ก ํ์ธ
file:///private/var/mobile/Containers/Data/Application/E6356173-319D-4CD7-B93A-AD99ACBF6C9A/tmp/
file:///var/mobile/Containers/Data/Application/E6356173-319D-4CD7-B93A-AD99ACBF6C9A/Library/
file:///var/mobile/Containers/Data/Application/E6356173-319D-4CD7-B93A-AD99ACBF6C9A/Documents/
2) ์ค์ ๋จ๋ง
- ์ค์น ๊ฒฝ๋ก ํ์ธ
- /var/mobile/Containers/Data/Application/8B0321D1-8FF4-4610-8DCF-FC7412E30CCC
- ์ฐ๋ฆฌ๊ฐ ๋ฌผ๋ฆฌ์ ์์น ์ ์ ์์ด ์ ๋์ ๊ฒฝ๋ก read๋ง api๋ก ๊ฐ๋ฅ(write, delete, backup ์๋ผ)
์ค์ ์ฑ์ ๊ตฌ์กฐ๋ฅผ ๋ณด๊ณ ์ถ์ผ๋ฉด, Xcode๋ฅผ ํตํด ์ค์น๋ ์ฑ์ ํจํค์ง ๋ด์ฉ์ ๋ณผ ์ ์๋ค.
Build Target > Manage Run Destinations... > ๋น๋ํ ์ฑ ์ ํ > Download Container ํด๋ฆญ!
๋ค์ด๋ก๋ ๋ฐ์ ๊ฒฝ๋ก์์ ํด๋น ์ฑ์ ํจํค์ง ๋ด์ฉ ํ์ธ ๊ฐ๋ฅ!
1. Bundle Container
- ์ฑ์ Bundle(AppName.app)์ ๋ณด์ ํ๋ค.
- Bundle(๋ฒ๋ค)์ด๋?
- ์คํ ๊ฐ๋ฅํ ํ์ผ๊ณผ info.plist, ํ์ํ ๋ฆฌ์์ค(assets, string ๋ฑ)๋ฅผ ํจ๊ป ๋ฌถ์ ๋๋ ํ ๋ฆฌ
- ๋ฆฌ์์ค๋ ํ๋ก์ ํธ ๋ด build phases > copy bundle resources ๋ก ์ถ๊ฐํ ํ์ผ๋ค(compile bundle sources๊ฐ ๋ฐ์ด๋๋ฆฌ ํํ์ ์คํํ์ผ ์ ์ฅ๋จ)
- ๋จ์ํ ํ์ผ์ ์์น๋ฅผ ์ด๋์ํด์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์ํํธ์จ์ด์ ์ผ๋ถ๋ถ์ ์ค์นํ๊ฑฐ๋ ์ด์ ํ๋๋ฐ ํธ๋ฆฌํจ์ ์ ๊ณต
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ๋ก ๊ทธ๋ฃนํํ์ฌ ์ ์ฅ
- ์์์ ์กฐ์์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฑ์ด ์ค์น๋๋ ๋์ ์ด ๋๋ ํ ๋ฆฌ๋ signed ๋๋ค.(read-only)
- Bundle(๋ฒ๋ค)์ด๋?
- read-only์ ๊ถํ์ผ๋ก ์ ๊ทผํ ์ ์๊ณ , ์ด ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ iCloud๋ iTunes์ ๋ฐฑ์
๋์ง ์๋๋ค.
- bundle ๊ฒฝ๋ก ์ถ๋ ฅํ๊ธฐ
let BundleURL = Bundle.main.bundleURL
1) ๋จ๋ง๊ธฐ
file:///private/var/containers/Bundle/Application/0255A099-08E7-409B-BC06-F358F0251463/Ruti.app/
2) ์๋ฎฌ๋ ์ดํฐ
file:///Users/leeyeon2/Library/Developer/CoreSimulator/Devices/151D065C-A8DA-4E99-BC5E-1948BEE32DEC/data/Containers/Bundle/Application/34356091-9B59-408F-A365-9A228FF6150D/Ruti.app/
2. Data Container
Data ์ปจํ ์ด๋๋ ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฌ์ฉ์๋ฅผ ์ํ Data๋ฅผ ๋ด๊ณ ์๊ณ ,
Data ์ปจํ ์ด๋๋ ๋ช๊ฐ์ ์๋ธ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ๊ณ ์๋ค.
- Realm Database๋ Document ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๋ง์ฝ ์ธ๋ถ์ ๋ ธ์ถ๋๋ฉด ์๋๋ ์ค์ํ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด Library์ Application Support ํด๋๋ก ๊ฒฝ๋ก๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
โ๏ธ Documents
- ์ฑ์ ํตํด ์์ฑ๋ ๋ฌธ์๋ ๋ฐ์ดํฐ ๋ฑ์ ์ ์ฅํ๋ค.
- ์ฌ์ฉ์๊ฐ ์์ /์ถ๊ฐ/์ญ์ ๊ฐ๋ฅ(read-write ๊ฐ๋ฅ, ๊ฐ๋ฐ์๊ฐ ์ํ๋ค๋ฉด ํน์ ๋ถ๋ถ์ ๋ํด์๋ง ์ ๊ทผ์ ์ ํํ ์ ์๋ค.)
- ์ฌ์ฉ์์๊ฒ ๋ ธ์ถ๋๋ ํ์ผ๋ง ์ ์ฅํด์ผ ํ๊ณ , ๋ด๋ถ์ ํ์ผ๋ค์ iCloud/iTunes ๋ฐฑ์ ๋๋ค.
โ๏ธ Library
- ์ ์ ๋ฐ์ดํฐ ํ์ผ ๋ฐ ์์ ํ์ผ์ ์ ์ธํ ๋ชจ๋ ํ์ผ์ ๊ด๋ฆฌํ๋ค.
- ์ฌ์ฉ์์๊ฒ ์ง์ ๋ ธ์ถ ์์
- ํ์ ๋๋ ํ ๋ฆฌ ์์ฑ ๊ฐ๋ฅ
- ํ์ ๋๋ ํ ๋ฆฌ
- Caches : ๋ฐ๋ณต ์ฌ์ฉ ์์ ๋ฐ์ดํฐ, ์ฑ์ ์ค๋ ์ท ๋ฑ์ด ์ ์ฅ (+ ํนํผ์ ๋ฅผ ์ด๋ฏธ์ง๋ ์บ์ฑ๋์ด ์ ์ฅ๋๋ค.)
- Application Support : ์ฑ์ด ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ, ์ค์ , ๋ฆฌ์์ค ๋ฑ์ด ์ ์ฅ๋จ, ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง์ง๋ ์์ง๋ง App ์์ ์ฌ์ฉ์ ๊ธฐ๋ก์ ๋จ๊ธฐ๋ ๊ณต๊ฐ
- Preferences : ์ ํ๋ฆฌ์ผ์ด์ ํ๊ฒฝ์ค์ ๋ฐ์ดํฐ ์ ์ฅ, UserDefaults, CFPreferences ๋ฑ ์ ์ฅ
โ๏ธ tmp
- ์ฑ์ ์ฌ์ฌ์ฉ์ด ๋์ง ์์ผ๋ฉฐ ์ฅ๊ธฐ๊ฐ ์ ์งํ ํ์๊ฐ ์๋ ์ผ์์ ์ผ๋ก ํ์ํ ํ์ผ์ ์ ์ฅ
- ์์คํ ์ ์ฑ์ด ์คํ๋๊ณ ์์ง ์์ ๋ ์ด๋ฌํ ํ์ผ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ญ์ ํ์ฌ ๋๋ฐ์ด์ค ๊ณต๊ฐ์ ๋ญ๋นํ์ง ์๋๋ก ํ๋ค.
3. iCloud Container
- ๋ฐํ์์ ์ ๊ทผ์ ์์ฒญํ ์ ์๋ ์ถ๊ฐ ์ปจํ ์ด๋ ๋๋ ํ ๋ฆฌ.