注意:我正在开发使用Xamarin.类似的问题发布在Xamarin论坛这里
我正在创建一个名为CompanyApp的应用程序.然后我为com.Company.CompanyApp创建了一个App ID ,以及使用相应App ID的Distribution Provisioning Profile.我上传了二进制文件,它工作得很好.
然后我继续创建应用程序的演示版本(基本上是相同的应用程序,只需要很小的修改,因此它是相同的解决方案和项目,只是不同的捆绑签名设置),CompanyAppDemo带有新的App ID com.Company.CompanyAppDemo,以及新的分发配置文件,它使用新的App 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不支持的代码签名权利.具体来说,价值'TEAMID.com.Company .CompanyApp'不支持'Payload/CompanyApp.app/CompanyApp'中的密钥'application-identifier'.该值应该是以TEAMID开头的字符串,后跟一个点'.',后跟一个包标识符."
我已经调试了好几天才弄清楚无济于事.
我想知道为什么当我使用新配置文件签名时,Application Loader抛出的错误引用了原始TEAMID.com.Company.CompanyApp的ID 而不是TEAMID.com.Company.CompanyAppDemo?这是Xamarin中的一个错误,它找错了配置文件或者我错过了什么?对于不同的应用程序,您不需要不同的证书吗?
请注意,在更改Xamarin中的iOS Build Signing选项之前,我始终在XCode> Preference中刷新了Provisioning Profile列表.
app-store ios application-loader provisioning-profile xamarin
在我的Xcode项目中,我有4种不同的方案(prod,dev,staging,staging2),它们会更改安装到手机的应用程序的软件包标识符.这样我可以并排安装所有4个版本,类似于这种技术.
现在我正在为iOS 8构建Today Extension.这是一个需要自己的bundle标识符的新Target.
Extension的Bundle Identifier必须以Parent App的Bundle Identifier为前缀,否则会抛出警告:
error: Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier.
Embedded Binary Bundle Identifier: com.company.app.TodayExtension
Parent App Bundle Identifier: com.company.app.staging
Run Code Online (Sandbox Code Playgroud)
在这种情况下,嵌入式二进制包标识符必须是com.company.app.staging.TodayExtension.
有没有办法我可以通过首先查看父目标的包标识符来配置我的今日扩展目标来设置其包标识符?也许通过自定义的运行脚本构建阶段?
我使用pkgbuild创建了一个默认的Component Property List文件.该文件看起来像:
<?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">
<array>
<dict>
<key>BundleHasStrictIdentifier</key>
<true/>
<key>BundleIsRelocatable</key>
<true/>
<key>BundleIsVersionChecked</key>
<true/>
<key>BundleOverwriteAction</key>
<string>upgrade</string>
<key>RootRelativeBundlePath</key>
<string>MyApp.app</string>
</dict>
</array>
</plist>
Run Code Online (Sandbox Code Playgroud)
我想使用shell脚本修改此文件.我尝试使用默认值写但它没有做任何事情.
有什么办法呢?(例如:我想将BundleIsRelocatable设置为false)
我有一个包含多个应用目标的项目(大约25个).
我将为这些应用程序制作今日扩展,但我不想使用相同的代码和配置创建大约25个扩展.
是否可以只创建一个我分配给25个应用程序的今日扩展?
Apple在2014年WWDC中引入了"Widgets"的概念.Widgets用于快速访问具有急需信息的应用程序.我试图将Widgets添加到我的应用程序中.当我们在应用程序中只有一个Target时很容易.
但是,如果我们有多个目标,似乎我们需要为每个目标添加单独的Widget.是否可以添加一个Widget并使其与所有目标共享?
提前致谢.