Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where is Info.plist in Xcode 13? (missing, not inside project navigator)

Has anyone figured out how to add/edit values in the Info.plist of Xcode 13 yet? I see they moved the Info.plist from the navigator pane... but although I can find it, I'm not sure how to edit it.

like image 637
Sergio Bost Avatar asked Jun 09 '21 01:06

Sergio Bost


People also ask

What happened Info plist?

plist is gone. It's not a bug. According to the Xcode 13 release notes: “Projects created from several templates no longer require configuration files such as entitlements and Info.

How do I create a plist in Xcode?

Right click on the folder you want to add it to and choose "New file…" This will bring up a blank file with columns for Key, Type and Value. Choose any of the presented options, you'll be overwriting it anyway. Now change the Key to "Apple".

What is Info plist in Xcode?

Xcode supplies an information property list file when you create a project from a template, as described in Create a project. By default, Xcode names this file Info. plist and adds it to your project as a source file that you can edit. Xcode creates one information property list for each target in the project folder.


1 Answers

It's a "feature."

You don't need it anymore. From the Release Notes:

Projects created from several templates no longer require configuration files such as entitlements and Info.plist files. Configure common fields in the target’s Info tab, and build settings in the project editor. These files are added to the project when additional fields are used. (68254857)

So, instead of inside Info.plist, edit properties like NSCameraUsageDescription here:

Project -> Targets -> Info -> Custom iOS Target Properties

Options similar to those previously found in Info.plist

The first time you add/edit, Xcode will automatically generate a new Info.plist file that’s kind of synced1 with Custom iOS Target Properties. Xcode will later merge them for you.

[1]: They’re not fully synced. Some properties like NSCameraUsageDescription will only appear in Custom iOS Target Properties, while Application requires iPhone environment will appear in both. I have no idea how Xcode determines this.


Want Info.plist back, completely?

You might want all of your app's properties in one place. Or maybe you don't trust Xcode with the merging. I spoke with an Apple engineer at WWDC21 about this... here's how to get the classic Info.plist back.

  1. Create a new "Property List" file (File -> New -> File)

Property List option selected in new file popup

  1. Name it Info.plist

File will be saved in the same file hierarchy level as ContentView.swift

  1. Copy and paste the existing values from Project -> Targets -> Info -> Custom iOS Target Properties to Info.plist.
Copy Paste
Individual row inside Custom iOS Target Properties selected Row pasted into Info.plist

Note: Currently you can only select and copy 1 row at a time. If you want to save some time, here are the default contents in XML format. To use this, right-click Info.plist -> Open As -> Source Code, then paste.

  1. Copy the path to Info.plist in the attributes inspector.

Full path selected

  1. Paste the path here:
Project -> Targets -> Build Settings -> Info.plist File

Full path pasted

  1. Set Generate Info.plist File to No

Yes or No popup after selecting row

  1. Last step. Remove Info.plist from Copy Bundle Resources (select, then press the - button).
Project -> Targets -> Build Phases -> Copy Bundle Resources

Info.plist selected in Copy Bundle Resources

Yep, that was a lot. But whether you want classic Info.plist or not is up to you — both are fine and won't change your app.

like image 200
aheze Avatar answered Sep 28 '22 06:09

aheze