首页 > 解决方案 > 关于 iOS 代码签名策略 - 当我们在没有代码签名的情况下归档项目并稍后使用配置文件将其导出时会发生什么?

问题描述

根据签名的顺序(我无法通过搜索找到答案),我对代码签名策略有一些疑问。

那是,

xcodebuild archive \
    -project <ProjectName>.xcodeproj \
    -sdk iphoneos \
    -scheme <SchemeName>
    -configuration Release \
    CODE_SIGN_IDENTITY="" \#disable code sign 
    CODE_SIGNING_REQUIRED=NO \#disable code sign
    CODE_SIGNING_ALLOWED=NO \#disable code sign

以上是没有代码符号的存档代码。下面,为了导出,我使用exportOptions.plist.

xcodebuild -exportArchive -archivePath <ProjectName>.xcarchive -exportOptionsPlist <ProjectName>/exportOptions.plist -exportPath <ProjectName>.ipa

如果我使用带有分发选项的配置文件,这可用于应用商店分发吗?

xcodebuild archive \
    -project <ProjectName>.xcodeproj \
    -sdk iphoneos \
    -scheme <SchemeName> \
    -configuration Release \
    CODE_SIGN_IDENTITY="****...D21C78" \
    PROVISIONING_PROFILE="********-****-..."

上面的代码不断出错:<ProjectName> requires a provisioning profile. Select a provisioning profile in the Signing & Capabilities editor,即使我正在使用 CLI。

如果有任何问题的解决方案,请指导我。任何可以参考的文件/纸张或其他材料也可以。

标签: ioscode-signingprovisioning-profile

解决方案


(自我回答我的问题)

所以,对于第一个问题,我做了很多实验,发现空签名的存档可以导出,但不能部署到设备上。

要正确部署 ipa(exported) 文件,应使用 codesign 命令对归档文件进行签名。

为此,它们应该包含权利和共同设计身份。

codesign -s {IDENTITY} --entitlements {PATH_TO_ENTITLEMENTS_FILE} ... {PROJECT_PATH}/~~~/{NAME}.app

对于第二个问题,我找不到答案,但可以使用诸如 empty-signing-archive -> codesign -> export 之类的策略。


推荐阅读