xcode 应用程序标识符权利值已更改?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23792236/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Application Identifier Entitlement Value has Changed?
提问by RRN
I just got this warning when submit my app to app store, it is just warning, not error. This app was transferred from another developer account to my account before, so the prefix of the App ID is changed.. I think this should be unavoidable, but since I got this warning, what does it affect my app actually? What Keychain access would be lost?
将我的应用程序提交到应用程序商店时,我刚刚收到此警告,这只是警告,而不是错误。这个app之前是从另一个开发者账号转移到我的账号的,所以App ID的前缀被改了。。我觉得这应该是不可避免的,但是既然我收到了这个警告,它实际上对我的app有什么影响?哪些钥匙串访问会丢失?
回答by Supertecnoboff
Have you transferred the app from another developer account to your one? The previous provisioning ID will obviously be different.
您是否将应用程序从另一个开发者帐户转移到您的帐户?之前的配置 ID 显然会有所不同。
UPDATE - For clarification
更新 - 澄清
I have noticed that this answer is getting a lot of views so I will just edit it to include my further explanation from the comments below.
我注意到这个答案获得了很多观点,所以我将对其进行编辑,以包括我从下面的评论中得到的进一步解释。
Basically the previous version of your application will NO longer be able to access keychain in order to save secure strings such as passwords (if it contains this functionality). This is because the distribution/provisioning profile it was signed with contains a different ID than the one you are using in your new distribution/provisioning profile because you have transferred your app from a previous account to your new one.
基本上,您的应用程序的先前版本将不再能够访问钥匙串以保存密码等安全字符串(如果它包含此功能)。这是因为用于签署它的分发/供应配置文件包含的 ID 与您在新分发/供应配置文件中使用的 ID 不同,因为您已将应用程序从以前的帐户转移到新帐户。
However any NEW versions of your app which are signed with the latest distribution/provisioning profile WILL be able to access keychain as normal in order to save secure data if they need this functionality because they are signed with a distribution/provisioning profile which contains the latest App ID for that app.
但是,使用最新分发/配置文件签名的任何新版本的应用程序将能够正常访问钥匙串,以便在需要此功能时保存安全数据,因为它们已使用包含最新的分发/配置文件签名该应用程序的应用程序 ID。
回答by davidisdk
The warning informs you that your updated app will not be able to access items previously saved in the keychain. The old version of your app can still access and store items in the keychain, just like the new version. However the two versions cannot share information in the keychain.
该警告通知您更新后的应用程序将无法访问之前保存在钥匙串中的项目。旧版本的应用程序仍然可以访问和存储钥匙串中的项目,就像新版本一样。然而,这两个版本不能共享钥匙串中的信息。
In summary, all data saved in the keychain will be lost once a user updates to the new version. All information stored in UIPasteboard will also be lost.
总之,一旦用户更新到新版本,保存在钥匙串中的所有数据都将丢失。存储在 UIPasteboard 中的所有信息也将丢失。
You can see this message if:
如果出现以下情况,您会看到此消息:
The app was transferred to your account and you are updating it for the first time. In this case there is nothing you can do to prevent the warning (and side effects).
Your app was added to iTunes Connect before June 2011 and you recently updated the provisioning profile used by the app. Either your old provisioning profile was using a wildcard (*) App ID and the new one is now using a specific App ID, or the opposite (less likely). In the later case you can switch back and avoid the warning (choose the correct provisioning profile in Xcode). In the other case, chances are your app needs access to services like Game Center, Push Notifications (or anything that a wildcard App ID will not let you use) and you cannot avoid the warning.
该应用程序已转移到您的帐户,您是第一次更新它。在这种情况下,您无法阻止警告(和副作用)。
您的应用程序是在 2011 年 6 月之前添加到 iTunes Connect 的,并且您最近更新了该应用程序使用的配置文件。您的旧配置文件使用通配符 (*) App ID,而新配置文件现在使用特定 App ID,或者相反(不太可能)。在后一种情况下,您可以切换回并避免警告(在 Xcode 中选择正确的配置文件)。在另一种情况下,您的应用程序可能需要访问诸如游戏中心、推送通知(或通配符应用程序 ID 不允许您使用的任何内容)之类的服务,并且您无法避免警告。
If you want more details, the warning is related to the fact that App ID prefixes are attributed by Apple and cannot be changed. Check the "App IDs" section in Apple's "Certificate, Identifiers & Profiles" page (https://developer.apple.com/account/ios/identifiers/bundle/bundleList.action- you need to sign in), press on an ID and look at the "Prefix" field. You can also check Apple's Technical Note 2311 https://developer.apple.com/library/ios/technotes/tn2311/_index.html
如果您想了解更多详细信息,该警告与 App ID 前缀由 Apple 归属且无法更改这一事实有关。检查 Apple 的“证书、标识符和配置文件”页面(https://developer.apple.com/account/ios/identifiers/bundle/bundleList.action- 您需要登录)中的“App IDs”部分,按ID 并查看“前缀”字段。您还可以查看 Apple 的技术说明 2311 https://developer.apple.com/library/ios/technotes/tn2311/_index.html
Lastly, you might thing you could avoid the warning by changing the Keychain Access Groups (keychain-access-groups) field of your provisioning profile. This will not work as Apple will not let you have different prefixes for the App ID and for the Keychain Access Groups.
最后,您可能会通过更改配置文件的钥匙串访问组 (keychain-access-groups) 字段来避免警告。这将不起作用,因为 Apple 不允许您为 App ID 和钥匙串访问组使用不同的前缀。
回答by Flash Sheridan
As of the stricter security in iOS 8.1.3, this is much more serious than the warning suggests; see https://developer.apple.com/library/ios/technotes/tn2319/_index.html#//apple_ref/doc/uid/DTS40013778-CH1-ERRORMESSAGES-UPGRADE_S_APPLICATION_IDENTIFIER_DOES_NOT_MATCH_THE_INSTALLED_APP. It seems like the mismatch causes a failure to upgrade to the new version. When I try to update via Xcode, it fails with an error to the device console like that in the Tech Note: “Upgrade's application-identifier entitlement string [....] does not match installed application's application-identifier string [....]; rejecting upgrade.” Trying to update via iTunes seems to fail silently.
由于 iOS 8.1.3 中更严格的安全性,这比警告所暗示的要严重得多;请参阅https://developer.apple.com/library/ios/technotes/tn2319/_index.html#//apple_ref/doc/uid/DTS40013778-CH1-ERRORMESSAGES-UPGRADE_S_APPLICATION_IDENTIFIER_DOES_NOT_MATCH_THE_INSTALLED_APP。似乎不匹配导致无法升级到新版本。当我尝试通过 Xcode 进行更新时,它会失败并在设备控制台中出现错误,如技术说明中所示:“升级的应用程序标识符授权字符串 [....] 与已安装的应用程序的应用程序标识符字符串 [... .]; 拒绝升级。” 尝试通过 iTunes 更新似乎无声无息地失败了。
I hope that the answer is simply “this error is simply an indication that Xcode has chosen the wrong provisioning profile,” verified as in https://developer.apple.com/library/ios/technotes/tn2318/_index.html#//apple_ref/doc/uid/DTS40013777-CH1-TNTAG65. But I last submitted my app many Xcode versions ago, and finding the right one may be a challenge.
我希望答案很简单“这个错误只是表明 Xcode 选择了错误的配置文件”,验证如https://developer.apple.com/library/ios/technotes/tn2318/_index.html#/ /apple_ref/doc/uid/DTS40013777-CH1-TNTAG65。但是我上次提交我的应用程序是在很多 Xcode 版本之前,找到合适的版本可能是一个挑战。
Note the phrasing “Xcodehas chosen the wrong provisioning profile”; to make sure that it chose the profile youthought you chose, click on the arrow next to the chosen profile's truncated name in the archive verification dialog. To double-check this, submit to the App Store with a known error (I inadvertently used a missing icon), so that you see whether the warning appears.
请注意措辞“ Xcode选择了错误的配置文件”;要确保它选择了您认为自己选择的配置文件,请单击存档验证对话框中所选配置文件的截断名称旁边的箭头。要仔细检查这一点,请将已知错误提交到 App Store(我无意中使用了丢失的图标),以便您查看是否出现警告。