Configuring Your Xcode Project for Distribution
You can edit your project settings anytime, but some settings are necessary during development. Others are recommended when you distribute your app for beta testing and required when you submit your app to the App Store or Mac App Store.
你可以在任何时候编辑你的项目设置。但是有一些设置在开发阶段就是需要的。
During development, your app must be provisioned and code signed to use certain app services and run on an iOS device (iPad, iPhone, or iPod touch). If you assign a bundle ID and team to your project, Xcode can create the necessary certificates, identifiers, and profiles for you in Member Center. You can enter this information now using the project editor or as needed when you add app services and launch your app.
在开发阶段,你的app必须通过认证并且签名才可以使用一些app 设备并且在这些ios设备上运行,例如(ipad,iphone,或者ipod touch)。如果你分配一个bundle id和team到你的工程中,xcode就可以为你在member center中创建必要的certificates,identifiers和profiles。
Before you distribute your app for testing or to the store, provide all the required information about your app. For example, set app icons to pass iTunes Connect validation tests.
Before you upload your app to the store, verify your build settings and set the copyright key for Mac apps.
在上传你的app到store前,验证你的build设置并且为mac apps设置copyright。
Setting Properties When Creating Your Xcode Project
For iOS apps, a dialog similar to this appears when you create an Xcode project from a template:
The product name is the name of your app as it will appear to customers in the store and should be similar to the app name you enter later in iTunes Connect. Most importantly, a customer should instantly associate the app name and icon in the App Store with the product name and app icon that installs on their devices. The product name is also the name that will appear in Springboard when the app is installed. The product name can’t be longer than 255 bytes and can be no fewer than 2 characters. (Read Best Practices in iTunes Connect Developer Guide for guidelines on choosing an app name.)
product name即使你的app name。会出现在store中应当同之后你在itunes connect中输入的app name类似。更重要的是,客户应当立即将在app store中的app name和icon和在设备上安装的product name和icon联系起来。product name不能超过255字节长度而且不能少于两个字符长度。
The organization name is an attribute of the Xcode project and is used in boilerplate text throughout your project folder. For example, the organization name is used in the source and header file copyright strings. The organization name in your Xcode project isn’t the same as the company name that you enter later in iTunes Connect.
organization name是xcode工程的一个属性并且用于贯穿项目folder的样本文件text。例如,organization name用于source和header文件中的copyright字符串。organization name和你之后在itunes connect中输入的company name不同。
The product name and company identifier you enter are concatenated to create the default bundle ID using reverse domain name service (reverse DNS) notation. The bundle ID needs to be unique to your app, so it’s important to set the company identifier to a unique string as well.
bundle id需要是唯一的。product name和company identifier串联起来就是默认的bundle id。所有company identifer是唯一的也很重要。例如:
orgnization identifier是com.xxx,product name是hellow world,那么默认的bundle id就是com.xxx.hellow world. 一般的orgnization identifer就是你公司的域名颠倒过来写。
For iOS apps, you can choose the types of devices you support from the Devices pop-up menu. For Mac apps, you can choose the Mac App Store categories from a pop-up menu.
The other values used by the Xcode template are sufficient for building and running your app locally, but later you’ll need to finalize properties, such as the bundle ID. Also, the assistant doesn’t set all required properties for the store. You complete the basic store configuration before you submit. Ideally, you’ll complete this configuration before you distribute your app for testing too.
After your app is released, you can’t change some of this metadata, so it’s important to choose your settings carefully. To learn which app states cause some properties to be locked in iTunes Connect, refer to iTunes Connect App Properties in iTunes Connect Developer Guide .
当你的app发布以后,你就不能更改其中的一些metadata了,所以慎重选择你的设置非常重要。
Before You Begin Configuring Your Project
Configuring Identity and Team Settings
For Xcode to create the team provisioning profile, the app’s bundle ID needs to be unique and the project assigned to a team. Later, you provide other information that identifies this version of your app. The identity settings appear in the Identity section of the target’s General pane. For iOS apps, the Identity section appears as shown here:
xcode创建team provisioning profile,app的bundle id需要是唯一的并且project要分配给一个team。而后,你提供其他的信息来标示你app的版本。
About Bundle IDs
A bundle ID precisely identifies a single app. A bundle ID is used during the development process to provision devices and by the operating system when the app is distributed to customers. For example, Game Center and In-App Purchase use a bundle ID to identify your app when using these app services. The preferences system uses this string to identify the app for which a given preference applies. Similarly, Launch Services uses the bundle ID to locate an app capable of opening a particular file, using the first app it finds with the given identifier. The bundle ID is also used to validate an app’s signature.
The bundle ID string must be a uniform type identifier (UTI) that contains only alphanumeric characters (A-Z,a-z,0-9), hyphen (-), and period (.). The string should be in reverse-DNS format. For example, if your company’s domain is Acme.com and you create an app named Hello, you could assign the string com.Acme.Hello as your app’s bundle ID.
一个bundle ID精确的标示一个app。当开发中执行到provison设备或者当发布给客户时候都需要bundle id。例如,当使用game center和in-app purchase服务是使用bundle id来标示你的app。系统偏好使用这个bundle id来标示app。类似的,launch services使用bundle id来定位app打开特殊的文件。bundle id也用来验证app的签名。
bundle id字符串必须只能办好阿拉伯数字和字符(A-Z,a-z,0-9), hyphen (-), and period (.)。字符串应当是点到的dns格式。例如你的公司的域名是Acme.com并且你创建了一个app叫做hello。那么你就可以拿com.Acme来作为你的app的bundle id了。
During the development process, you use an app’s bundle ID in many different places to identify the app.
在开发过程中,你可以在许多不同的地方来使用app的bundle id来标示app。
Specifically, the bundle ID is located and used as follows:
In the Xcode project, the bundle ID is stored in the information property list file (Info.plist). This file is later copied into your app’s bundle when you build the project.
In Member Center, you create an App ID that matches the app’s bundle ID. If the App ID is an explicit App ID, it exactly matches the bundle ID. However, unlike domain names, bundle IDs are case sensitive. If the App ID is lowercase, your bundle ID needs to be lowercase, too.
In iCloud, the container IDs you specify in your Xcode project are based on the bundle IDs of one or more apps.
In iTunes Connect, you enter the bundle ID to identify your app. After your first version is available on the store, you can’t change your bundle ID or delete the associated explicit App ID.
在xcode工程中,bundle id存储在property list文件(Info.plist)中。这个文件之后当你build项目时会copy到你app的bundle中去。
在member center,你创建一个匹配你app bundle id的app id。如果app id时一个显示的app id,他会完全匹配bundle id。尽管如此但是,不想domain命名,bundle ids是大小写敏感的。如果app id是小写的,你的bundle id也需要是小写的。
在itunes connect中,你输入bundle id来标示你的app。当第一个版本在store中存在时,你就不能再更改你的bundle id或者删除和其相关联的显示的app id。