当我尝试在设备上构建并运行应用时,我收到以下错误App installation failed: This application's bundle identifier does not match its code signing identifier.
我检查了签名证书,捆绑ID,配置文件,权利以及一切正确。
任何想法?
答案 0 :(得分:5)
最后,错误是由Carthage引起的。
删除并重建所有框架后,它解决了问题。
答案 1 :(得分:2)
Building Phases
+
并在New Run Script Phase
中添加脚本/usr/local/bin/carthage copy-frameworks
添加到脚本框中。Input Files
中为您在应用程序中使用的每个迦太基框架添加一行:$(SRCROOT)/Carthage/Build/iOS/FrameworkName.framework
Output Files
下为每个框架添加以下内容:$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/FrameworkName.framework
此过程已为我修复。可以在迦太基文档中找到。您可以在第4、5、6项中看到此过程。 https://github.com/Carthage/Carthage#adding-frameworks-to-an-application
答案 2 :(得分:1)
要解决此问题,我必须将框架的产品捆绑包标识符设置为任何带有点的内容。
在我的情况下,这是因为框架而不是迦太基的框架,而是因为它是Workspace中的目标依赖项。
在修复产品捆绑包标识符之前,其名称类似于“ FrameworkName”,并且Xcode会自动附加一些自动生成的ID,并且签名标识符将变为“ FrameworkName-5555494493d11a8e5f473d1cb2a5d781973d171e”。
当我将“产品捆绑包标识符”设置为带点的东西(例如“ com.organization.frameworkName”)时,Xcode停止了自动附加任何内容,并且一切正常,因为ID匹配。
似乎在Xcode 11和Catalina之前这不是问题。这个调试太疯狂了。
答案 3 :(得分:0)
您使用的是自定义.xcconfig
文件吗?
有时,自定义.xccofigs可以覆盖默认的代码符号设置。
1)通过以下方式查看项目是否具有自定义配置:
--- 1)点击project
,无论Xcode中的项目名称是什么(通常在顶部)
2)在右侧,您将看到您的项目设置。在这里,您可以设置标识符..如果没有,那么您的错误视图。这是你应该看到的:
3)将“bundle Identifier”更改为“com.yourcompany.yourAppName”的效果。 --- com.yourcompany是您的网站域名反转.. Apple推荐此项。 --- com.yourcompany是应用程序名称或“昵称”之后你就这么说了.com.yourcompany.myCoolApp将是完整的标识符。
4)完成此操作后,请确保在“构建设置”下,如下所示:
---您的“代码签名身份”设置为您想要的任何身份。对于iOS或OSX上的调试,您使用“iPhone Developer:Your Name xxx”或“Mac Developer:Your Name xxx”。
答案 4 :(得分:0)
在iTunes中,他们将其更改为每个角色都有一个标志,如果他有 访问证书,标识符和配置文件。 默认情况下为false。
我要做的就是:
转到iTunesConnect->用户和访问权限->通过选中“访问证书,标识符和配置文件”复选框来编辑我的角色
答案 5 :(得分:0)
此问题仅与代码签名
有关但是,这里要注意的关键是,如果您使用的是XCode 11.x版本。 不仅是您项目中的代码签名,而且我们应该检查添加到项目中的第三方SDK或依赖项中的代码签名。
验证第三方SDk的代码签名的步骤:
转到目标->签名和功能->选择所有选项卡->捆绑包标识符 如果您发现标识符中有任何不均,例如带有4个分隔符的标识符(例如com.company.mac.app)
将其更改为 com。* ,然后输入。
确保已使用XCode 11.x设置了XCODE命令行工具
现在,使用以下命令重建SDK,并在上面的第3步中完成更改
carthage build --no-skip-current --cache-builds --platform iOS
现在复制从源代码的 carthage 文件夹生成的框架,并替换项目中现有的SDK。
为您项目中的所有第三方SDK重复相同的处理过程。
注意:请确保您在
中将所有第三方SDK标记为嵌入并签名Targets => General => Frameworks, Libraries, and Embedded Content
答案 6 :(得分:-2)
您的应用程序由配置文件签名,后者又链接到证书(可以用于开发或分发)。
现在证书有一个Bundle ID,可以是:
无论哪种方式,您的应用的捆绑包标识符都必须与绑定到您的配置文件的证书的捆绑ID相匹配。 不匹配会触发您遇到的错误。