注意:我正在使用Xamarin进行开发。类似问题发布在Xamarin论坛here
我正在创建一个名为 CompanyApp 的应用。然后,我为 com.Company.CompanyApp 创建了一个App ID,以及使用相应App ID的Distribution Provisioning Profile。我上传了二进制文件,它工作得很好。
然后我继续创建应用程序的演示版本(基本上是相同的应用程序,经过少量修改,因此它是相同的解决方案和项目,只是不同的捆绑签名设置), CompanyAppDemo 带有新的应用ID com.Company.CompanyAppDemo ,以及使用新应用ID的新分发配置文件。我更新了iOS Bundle Signing选项以使用新的Provisioning Profile并生成了IPA。但是当我将其上传到Application Loader时,我收到以下错误:
[2015-01-23 16:08:21 SGT]错误:错误ITMS-90164:“代码无效 签署权利。您的应用包标签中的权利可以 与配置文件中包含的内容不匹配。 根据配置文件,捆绑包含密钥值 这是不允许的:'TEAMID.com.Company.CompanyApp'代表密钥 'Payload / CompanyApp.app / CompanyApp'中的'application-identifier'“
[2015-01-23 16:08:21 SGT]错误:错误ITMS-90046:“代码无效 签署权利。您的应用程序包的签名包含 iOS上不支持的代码签名权利。特别, 关键'application-identifier'的值'TEAMID.com.Company.CompanyApp' 在“Payload / CompanyApp.app / CompanyApp”中不受支持。这个值 应该是以TEAMID开头的字符串,后跟一个点'。', 然后是包标识符。“
我已经调试了好几天才算无济于事。
我想知道为什么当我与新签约时 配置文件,Application Loader抛出的错误是指原始 TEAMID.com.Company.CompanyApp 的ID,而不是 TEAMID.com.Company.CompanyAppDemo ?这是Xamarin中的一个错误,它找错了配置文件或者我错过了什么?对于不同的应用程序,您不需要不同的证书吗?
请注意,我一直刷新XCode中的Provisioning Profile列表>在Xamarin中更改iOS Build Signing选项之前的首选项。
答案 0 :(得分:132)
如果有人通过搜索像我这样的错误ITMS-90046来到这里,我的解决方案是清理它并删除所有预编译的框架(自定义框架),然后重新构建。
注意:错误描述说明了关键" aps-environment" as" development"。
答案 1 :(得分:62)
我遇到了同样的问题,并用一个简单的产品 - >解决了清洁强>
答案 2 :(得分:19)
如果有人通过 get-task-allow 和搜索错误 ITMS-90164 和错误 ITMS-90046 来到这里> asp-environment 键:
像David P说的那样,产品 - >在新存档解决我的问题之前清理。
我只想补充说,在我的情况下,我发现错误的xarchive缺少以下文件:
在将.xarchive发送到客户端进行生产签名之前,您可能需要查找archived-expanded-entitlements.xcent文件,并确保它在那里。
答案 3 :(得分:17)
最后在拔毛2周后..
由于某些原因,如果没有密钥'应用程序标识符'在设置为 TEAMID.com.Company.CompanyAppDemo 的Entitlements.plist中,Xamarin将使用原始应用程序标识符,即 TEAMID.com.Company.CompanyApp
因此,解决方案是在Entitlements.plist中添加指定正确应用程序包ID的application-identifier。然后在构建选项>中包含plist。 iOS捆绑包签名。
答案 4 :(得分:8)
同样的问题,用简单的产品 - >解决清洁强>
答案 5 :(得分:5)
权利文件有空数组,删除那些解决了问题。
答案 6 :(得分:5)
在Entitlements.plist中更改此内容:
<key>aps-environment</key>
<string>development</string>
对此:
<key>aps-environment</key>
<string>production</string>
答案 7 :(得分:5)
这也可能是因为您必须同意iTunes连接中的新合同。登录iTunes connect,您应该会在顶部看到一条横幅,提示您同意最新的合同更改。
答案 8 :(得分:4)
答案 9 :(得分:3)
如果您在打包前未选择相应的发布证书,将报告ERROR ITMS-90164
构建设置 - &gt;代码签名身份 - &gt;发布 - &gt;任何IOS SDK
答案 10 :(得分:2)
确保在归档时选择了App目标而不是WatchKit App。
答案 11 :(得分:2)
其他答案都没有为我解决这个错误,但是这样做了:
答案 12 :(得分:1)
我曾尝试从不是主人的git分支上传构建。为解决此问题,我将分支合并到主服务器并再次构建。然后我就能成功上传构建。
答案 13 :(得分:1)
我刚刚在entitlements.plist中重命名了来自applinks的访问域的价值:htts://domain.app.link到applinks:domain.app.link它就像一个魅力。干杯!
答案 14 :(得分:1)
我尝试了这里列出的所有内容,结果发现问题是我的.entitlement
文件,其中包含我从未输入过的行,它们只是以某种方式添加了。
删除了这些行并再次尝试,工作。
答案 15 :(得分:1)
做一个正确的Xcode&#39; Quit&#39;然后重启是让它为我工作的最后一个动作。
我更改了捆绑包标识符(针对演示版)并在验证我的归档版本时遇到了相同的错误(详见问题)。我正在使用Xcode。刚关闭Xcode并重新打开我的项目是不够的,但是完全退出&#39; Quit&#39;是。某些东西可能在我猜测的地方被缓存了。
答案 16 :(得分:1)
包含2个目标(包含2个开发者ID,2个权利)的项目可能会导致此问题。 (不要问我这是怎么发生的......)
归档时,请暂时删除其他授权文件。
答案 17 :(得分:0)
对我来说,我在iOS Bundle Signing下的Custom Entitlements设置中输入了错误的文件。删除它,它工作了!
答案 18 :(得分:0)
经过数小时的调查,我找到了一个简单的解决方案。
我没有使用应用程序加载器来上传应用程序,而是使用了XCode中的Organizer,它在上传时没有任何警告!
答案 19 :(得分:0)
答案 20 :(得分:0)
我的问题是我使用了错误的包来创建IPA文件
答案 21 :(得分:0)
Build Phase
华友世纪,你完成了它。问题解决了
答案 22 :(得分:0)
我有完全相同的问题,这是一个非常愚蠢的错误。我不希望任何人花时间在这上面,所以对于这个:
所以这里发生的事情是,我进入了&#39; 10&#39;在部署目标中。应该是10.0而不是。这就产生了臭名昭着的ERROR ITMS-90164/90046:我的代码签名权利无效!
答案 23 :(得分:0)
You should check your Entitlements. It is like plist file. Edit it to development and the remove the extra fields.
答案 24 :(得分:0)
我的两分钱在这里。
现在,我陷入了这个问题,因为当我从Apple开发人员门户网站复制我的TeamID /应用程序ID时,这为entitlement.plist带来了许多无关的价值。我没有注意到这一点,因为我正在使用Xcode编辑entitlement.plist,并且输入框不会在第一个换行符之后显示所有内容。
对于这种情况,我建议使用纯文本编辑器作为entitlement.plist。
谢谢, 塞缪尔
答案 25 :(得分:0)
尝试了最近几天在 Stackoverflow 上阅读的所有技巧之后,我删除了文件“ xxxxxx.entitlements”并重新生成。我单击功能,在关联域中选择“打开”,然后添加“域”。然后在功能>推送通知中单击修复“将推送通知权利添加到您的权利文件中”。
让我做 ARCHIVE 成功
答案 26 :(得分:0)
我有一个类似webcredentials:https://************.link
的链接,这导致我的上传失败。我删除了它,问题就解决了。