Sobes.tech
Middle

როგორ შევცვალოთ აპლიკაციის ხატულა გარემოზე დამოკიდებული?

sobes.tech AI

პასუხი AI-სგან

გარემოზე დამოკიდებული (მაგალითად, Dev, Staging, Prod), შესაძლებელია გამოყენება:

  1. თითოეული გარემოსთვის ცალკე მიზნების (Targets) შექმნა.
  2. კონფიგურაციის ფაილების (.xcconfig) გამოყენება.
  3. Info.plist-ში პერსონალიზებული გასაღებების დამატება.

პროცესი:

  • შექმენით დუბლიკატები ძირითადი მიზნისთვის თითოეულ გარემოსთვის.
  • ახალი მიზნების პარამეტრებში შეცვალეთ Info.plist File ან დაამატეთ CFBundleIconFiles გასაღები და მიუთითეთ ფაილის სახელი.
  • თითოეული გარემოსთვის .xcconfig ფაილებში განსაზღვრეთ შესაბამისი Info.plist-ზე მიმანიშნავი ცვლადი.
  • ძირითადი მიზნის მშენებლობის პარამეტრებში დააყენეთ Info.plist File-ი ${INFO_PLIST_FILE}-ზე (სადაც INFO_PLIST_FILE არის .xcconfig-დან ცვლადი).

Dev-ისთვის .xcconfig მაგალითი:

// DEV.xcconfig
INFO_PLIST_FILE = Info_Dev.plist

Info_Dev.plist მაგალითი:

<!-- Info_Dev.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	...
	<key>CFBundleIcons</key>
	<dict>
		<key>CFBundlePrimaryIcon</key>
		<dict>
			<key>CFBundleIconFiles</key>
			<array>
				<string>AppIconDev</string> // Dev-ის asset-ის სახელი
			</array>
		</dict>
	</dict>
	...
</dict>
</plist>

სხვა მეთოდი, რომელიც არ საჭიროებს მიზნების დუბლირებას, არის სკრიპტების გამოყენება მშენებლობის დროს, რომლებიც შეცვლიან Info.plist-ს მიმდინარე კონფიგურაციის მიხედვით. თუმცა, მიზნების ცალკე შექმნა უფრო ნათელია და მხარდაჭერილია.

სურათების მართვისთვის, შესაძლებელია თითოეულ მიზნაზე ან კონფიგურაციაზე განთავსდეს ცალკეული Asset Catalogs-ები, ან იკონების ნაკრებები სახელწოდებით (AppIconDev, AppIconStaging, AppIconProd) და შესაბამისი სახელი მიუთითოთ Info.plist-ში.