开发我的第一个iOS应用程序4个月后,是时候将其提交到App Store
了。我在iTunes Connect
中创建了应用,填写了所有详细信息,并在Bundle ID
和Connect
中设置了正确的Xcode
。但是,过去3天我一直在努力解决这个奇怪的问题。似乎xcode正在尝试上传Cocoapods
框架,而不是我的主应用程序。
归档后,我去了Window > Organizer > Validate...
。我看到以下屏幕:
错误:
(对于googlers:未找到合适的应用程序记录。请验证您的包标识符“org.cocoapods.Alamofire
”是否正确。)
错误消息表明它正在尝试根据框架的名称匹配Bundle ID
,而不是我自己的捆绑(例如com.organization.AppName
)。我无法在任何地方找到答案。我尝试在我的Podfile
(有use_frameworks!)中执行以下操作,以及我的不同配置组合,但没有成功。
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
问题:
Xcode
尝试匹配framework's bundle id
而不仅仅是我的主应用程序? 编辑1:我能够解决这个问题,但后来又引发了另一个问题,所以我仍然没有解决方案。基本上,Alamofire Pod(来自Cocoapods)有一个包ID com.xxx.Alamofire
。我将其更改为com.xxx.myAppName
。有了这个,我能够将它发送到App Store,但由于以下错误,我无法从TestFlight在我的iPhone中安装该应用程序:
4/22/16, 12:50:29 AM itunesstored[124]: [ApplicationWorkspace]: Failed to install application: com.xxx.myAppName; /var/mobile/Media/Downloads/5927832272594571027/-6969961974973998640; Error Domain=LaunchServicesError Code=0 "(null)" UserInfo={Error=DuplicateIdentifier, ErrorDescription=The parent bundle has the same identifier (com.xxx.myAppName) as sub-bundle at /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.IVHCuO/extracted/Payload/MyApp.app/Frameworks/Alamofire.framework}
答案 0 :(得分:5)
经过一段时间的努力,我才能让它发挥作用。基本上,只有Alamofire提出这个问题。这是我做的:
com.company.appName
,请在其中填写com.company.appName.Alamofire
。我为框架com.company.appName
尝试了com.company.Alamofire
,没有任何效果。
答案 1 :(得分:5)
我在尝试将应用程序提交到iTunes Connect时收到了这个确切错误:“找不到合适的应用程序记录。验证您的包标识符'org.cocoapods.Alamofire'是否正确”。
我最后通过将捆绑操作系统类型代码更改为 APPL 来解决此问题。
答案 2 :(得分:5)
它对我来说非常合适。我刚刚找到Info.plist右键单击打开为“源代码”,我将<key>CFBundlePackageType</key>
更改为字符串APPL
<key>CFBundlePackageType</key>
<string>APPL</string>
答案 3 :(得分:4)
刚刚遇到此问题时,尝试上传到App Store时显示以下错误。
iTunes Store操作失败。
未找到合适的申请记录。验证您的捆绑包标识符'org。 cocoapods .Alamofire'是否正确
我们在尝试上传(使用Cocoapods)并且未能找到修复程序时遇到了这种情况,采取了完全从我们的项目中删除Cocoapods的激烈操作,而是手动将每个pod添加为框架。
而且......上传到App Store仍然失败,基本相同的错误!
iTunes Store操作失败。
未找到合适的申请记录。验证您的包标识符'org。 alamofire .Alamofire'是否正确
所以这看起来可能是与Xcode本身的框架使用有关的错误。
发现这不一定是由Cocoapods造成的,我们决定继续使用Cocoapods并提出以下步骤来解决这个问题。
修复:
我们的项目包含2个目标(忽略单元测试目标等)。 1为应用程序(让我们称之为 MyApp ),另一个包含网络层和其他非应用程序特定功能(让我们称之为 MyAppKit )。
Bundle OS Type code
(也称为Info.plist
)添加到MyApp的APPL
并将其设置为Always Embed Swift Standard Libraires
。Yes
至Always Embed Swift Standard Libraires
。No
为{{1}}。仍在仔细研究这里发生了什么,但认为这可能对目前正在经历这种情况的人有用。
答案 4 :(得分:1)
最近,当我使用cocoapods发布应用程序时,我也遇到了同样的问题。 这是Objective-C项目,并将pods作为动态框架进行整合。
这已经是reported bug。
因此,我建议遵循以下两种方法来解决此问题:
使用静态库而不是动态框架。 为此,您可以评论#use_frameworks!您的pod文件中的行。
如果您需要使用框架,可以尝试以下步骤:
在Xcode目标中将您的框架添加为嵌入式二进制文件。
在目标的构建阶段,添加一个运行脚本:
示例脚本:
# Stripping framework only for archive
if [ "$ACTION" = "install" ]; then
FRAMEWORK_NAME="Framework name"
SCRIPT_FILE_NAME="strip-framework.sh"
# Set working directory to product’s embedded frameworks
cd "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/${FRAMEWORK_NAME}.framework"
# Get architectures for current file
ARCHS="$(lipo -info "${FRAMEWORK_NAME}" | rev | cut -d ':' -f1 | rev)"
for ARCH in $ARCHS; do
if ! [[ "${VALID_ARCHS}" == *"$ARCH"* ]]; then
# Strip non-valid architectures in-place
lipo -remove "$ARCH" -output "$FRAMEWORK_NAME" "$FRAMEWORK_NAME" || exit 1
fi
done
echo "Framework was successfully stripped with unsupported architectures"
fi
# Removing script from framework folder
if [ -f ${SCRIPT_FILE_NAME} ]; then
rm -rf "${SCRIPT_FILE_NAME}"
fi
注意:请在此脚本中替换您的框架名称!,确保将名为“strip-framework.sh”的脚本文件放入框架目录的顶层。
第三方框架从未由提供商签署,也没有消费者的责任。 因此,当您归档时,它会与您的应用程序包一起签署您的框架。但在这之后,Application loader会将您的bundle标识符视为框架之一。它奇怪的是。
在工作2天后,我可以最终发布我的应用程序。
即使您可以通过这样棘手的方式提交,它也永远不会安装在设备上。
最后,我得到了一个完美的解决方案并找出原因。这是 因为您的第三方框架存在一些问题而发生。 例如,在我的情况下,Quickblox框架从未支持过 bitcode呢。所以我不得不在构建设置中禁用bitcode 主要目标和框架完全。这肯定会解决您的问题。
答案 5 :(得分:0)
如果您的apptitle有通常的斜杠&#34; /&#34;,则xcode无法签名,并认为我上传了第一个框架org.cocoapods。***
我做了什么 - 将斜线改为类似的符号/
(第一个斜杠,下一个 - 其他unicode符号://)
答案 6 :(得分:0)
答案 7 :(得分:0)
首先,请检查您的捆绑包标识符。接下来,请确保您的应用是在应用内商店连接中创建的,这可能是无法将应用上传到商店的原因之一。