当我尝试将我的应用提交到应用商店时,我收到错误:
错误ITMS-90685 :" CFBundleIdentifier碰撞。还有更多 一个包含CFBundleIdentifier值的包 应用程序ProjectName.app"
下的com.companyname.projectName
任何人都可以帮助我吗?
答案 0 :(得分:8)
如果您的HostApp嵌入了一个框架,而该框架也已嵌入在某些框架中,而这些框架也已嵌入HostApp,则会发生这种情况。例如,
H
嵌入框架F1
和框架F2
F1
嵌入框架F2
F2
将在IPA生成后成捆复制只有HostApp,但没有其他框架应在其各自的构建阶段中嵌入任何依赖的框架。所以,
F1
的“构建阶段”标签F2
步骤中删除Embed Frameworks
,或整步删除F1
”的“常规”标签Do Not Embed
选择F2
选项构建良好。
答案 1 :(得分:5)
有时候,这与App Extensions没有任何关系,在没有任何App Extension的应用程序中,这可能是源于您的,因为您是在生成的IPA中复制框架。
就我而言,问题是我正在导入一个包含其他两个框架B和C的框架A,它们都在同一工作区中。在应用程序中,我正在导入A,B,C,但是在框架A中,框架B和C嵌入了 Embed&sign (嵌入和签名),这是不正确的,并且引起了问题。它应该已经添加了请勿嵌入。
希望对您有帮助。
答案 2 :(得分:4)
您的应用中是否有应用扩展程序? 我有这个错误,因为Cocoapods嵌入式框架在App Extension文件夹中。
您需要从Extension target中删除构建阶段'[CP] Embed Pods Frameworks'
。
我为此编写了这样的ruby脚本:
# remove.rb
require 'xcodeproj'
project_path = "Keyboard.xcodeproj"
project = Xcodeproj::Project.open(project_path)
project.targets.each do |target|
puts target.name
if target.name.include?("Extension")
phase = target.shell_script_build_phases.find { |bp| bp.name == '[CP] Embed Pods Frameworks' }
if !phase.nil?
puts "Deleting Embed Pods Frameworks phase from #{target.name}…"
target.build_phases.delete(phase)
end
end
end
project.save
应修复 CocoaPods 1.1.0 :https://github.com/CocoaPods/CocoaPods/issues/4203
答案 3 :(得分:2)
这似乎是一个长期存在的错误,甚至在Swift Package Manager中也存在。对于扩展的构建阶段,我在最后一步中添加了此“运行脚本”:
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
这将删除在归档过程中抱怨的重复框架,无论如何它将与宿主目标链接。我们只需要将其链接到Xcode中进行扩展,以便我们可以在开发时进行编译。
答案 4 :(得分:1)
没有脚本的步骤: