我在这里的初步讨论中粘贴了我的最后一篇文章:
https://github.com/CocoaPods/CocoaPods/issues/4331
此问题已存在近一年,但仍未找到适当的解决方案。
建设时:
Code Sign error: Provisioning profile does not match bundle identifier: The provisioning profile specified in your build settings (“MyDistributionProfileName”) has an AppID of “com.myorg.myapp” which does not match your bundle identifier “org.cocoapods.PureLayout”.
请注意!使用(在mypod.podspec文件中)将PureLayout作为依赖项添加到我的pod中:
s.dependency 'PureLayout', '3.0.2'
这是我的Pod的整个podspec文件:
Pod::Spec.new do |s|
s.name = 'MyPod'
s.version = '1.2.34'
s.license = { :type => "MIT", :file => "LICENSE" }
s.homepage = 'https-:-//bitbucket.org/XXXX123/my-pod'
s.authors = { "AuthorName" => "author@myorg.com" }
s.summary = 'This isa a cocoa pod that contains the MY framework.'
s.source = { :git => "https-:-//bitbucket.org/XXXX123/my-pod", :tag => "#{s.version}" }
s.ios.deployment_target = '8.0'
s.source_files = 'MyPod/**/*.{swift,h}'
s.resource = 'MyPod/*'
s.pod_target_xcconfig = { 'ENABLE_BITCODE' => 'NO', 'ONLY_ACTIVE_ARCH' => 'NO'}
s.dependency 'PureLayout', '3.0.2'
end
注意:
暂停使用CocoaPods不是一种选择。
使用@DimaVartanian修复导致类似的错误,如@mgrebenets
错误ITMS-90035 签名无效。代码对象根本没有签名。确保您已使用分发证书(而非临时证书或开发证书)对您的应用程序进行了签名。验证Xcode中的代码签名设置在目标级别是否正确(覆盖项目级别的任何值)。此外,请确保您上传的软件包是使用Xcode中的Release目标而不是Simulator目标构建的。如果您确定您的代码签名设置正确,请在Xcode中选择“全部清除”,删除Finder中的“构建”目录,然后重建您的发布目标。有关详细信息,请参阅https - : - / developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html“
错误ITMS-90171 无效的捆绑包结构 - 不允许使用二进制文件“XApp.app/Frameworks/X.framework/XView.o”。除了受支持的捆绑包的CFBundleExecutable之外,您的应用程序不能包含独立的可执行文件或库。有关iOS应用程序包结构的信息,请参阅https - : - // developer.apple.com/go/?id=bundle-structure上的“捆绑编程指南”。
我的项目也使用PushNotifications,因此无法使用任何通配符配置文件。
这是我建造建筑物的健身房线
gym --clean --scheme ${XCODE_PROJECT_TARGET_NAME} --configuration Release --include_bitcode false --archive_path ${BUILDS_DIR}${PACKAGE_NAME}.xcarchive --output_directory $BUILDS_DIR --output_name "${PACKAGE_NAME}.ipa" --xcargs PROVISIONING_PROFILE=$APP_PROVISION_UUID
当应用@DimaVartanian修复时,此行无任何错误,但如上所述,在上载过程中会导致错误ITMS-90035 和错误ITMS-90171 。
以下是我上传构建的试用版:
pilot upload --skip_submission --username ${APPLE_ID_USERNAME} --team_id ${APPLE_ITUNES_CONNECT_TEAM_ID} --verbose --ipa ${BUILDS_DIR}${PACKAGE_NAME}.ipa --skip_waiting_for_build_processing true
我还可以确认使用xcode进行构建/存档/上传时存在同样的问题。
将此--export_options "ExportOptions.plist"
添加到健身房命令行,没有任何区别。尝试通过xcargs --xcargs "PROVISIONING_PROFILE=$APP_PROVISION_UUID exportOptionsPlist=$EXPORT_OPTIONS_PLIST"
也失败了。
该文件的内容如下:
<?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">
<dict>
<key>teamID</key>
<string>TEAMID123</string>
<key>uploadSymbols</key>
<string>NO</string>
<key>compileBitcode</key>
<false/>
<key>uploadBitcode</key>
<false/>
<key>method</key>
<string>app-store</string>
</dict>
</plist>
我希望CocoaPods团队能够迅速解决这个问题。
简而言之 - 失败的是以下序列的结束:
我稍后会尝试添加一个示例项目来演示此问题。
答案 0 :(得分:4)
好的,所以我这次以自己的方式解决了这个问题。 通常,解决方案比以往任何时候都容易。
bugger错误的原因ERROR ITMS-90171这次是podspec文件中的指令。
这一个:s.resource = 'MyPod/*'
不知道我是怎么错过那个,但是&#39; MyPod / *&#39;字面上说,包括MyPod目录中的所有内容,除了图形资源外还包含* .swift文件。
通过将该行更改为:s.resource = 'MyPod/Graphics.xcassets'
来解决问题。没有错误ITMS-90171。
然而, 在这里,我们仍然需要采用一种解决方法(由@DimaVartanian提出)来修复cocoapods提供的框架的代码签名要求。
修复本身就是将此代码添加到基础项目&#39; Podfile&#39;:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
end
这将通过项目中的所有pod目标(在&#39; pod install&#39;之后)通过更改某些设置来删除代码签名要求,如代码中所示。
有一些谣言说,升级到XCode 8后不再需要这种解决方法。我没有找到任何官方确认,但我希望这是真的。