我已经使用xcodebuild命令创建了一个签名的.xcarchive文件。

.xcarchive内部是.app文件。 .app内有一个名为archived-expanded-entitlements.xcent的文件。这个文件是我问题的关键。

我运行另一个从.xcarchive创建.IPA文件的xcodebuild命令。

由于缺少archived-expanded-entitlements.xcent文件,因此创建IPA失败。问题是,xcodebuild正在创建一个临时目录,该目录将其复制到我的.app文件中,而在该.app文件中,没有archived-expanded-entitlements.xcent文件。

除此文件外,所有其他文件都在其中。

我运行的命令如下:

这将创建xcarchive:

xcodebuild -project diplomat.xcodeproj -scheme schemeName archive -archivePath /Path/To/Archive/name.xcarchive -configuration AppStore CODE_SIGN_IDENTITY="identity" PROVISIONING_PROFILE=provProfile

这将创建IPA:
xcodebuild -exportArchive -exportFormat IPA -archivePath /Path/To/Archive/name.xcarchive -exportPath /Path/To/Archive/name.ipa

尽管指定了.xcarchive的位置,但它会创建一个临时目录,并且不包含重要文件。
请注意,archived-expanded-entitlements.xcent文件是在.xcarchive进程(正在运行的第一个命令)期间创建的,并且在第二个命令运行期间无法复制到temp目录中。

这是确切的错误。 Google和StackOverflow产生了类似的错误,但此实际问题没有解决。
Checking original app

     + /usr/bin/codesign --verify -vvvv    /var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-  42128-00007ED35037747A/name.app

Program /usr/bin/codesign returned 1 :

     [/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app: a sealed resource is missing or invalid

file missing:

     /private/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app/archived-expanded-entitlements.xcent
]

Codesign check fails :

      /var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app: a sealed resource is missing or invalid

file missing:

      /private/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app/archived-expanded-entitlements.xcent

Done checking the original app

最佳答案

这确实是xcodebuild的怪异行为,但是您仍然可以使用exportArchive命令并使用exportProvisioningProfile指定配置文件:

xcodebuild -exportArchive -exportFormat IPA \
  -archivePath /Path/To/Archive/name.xcarchive \
  -exportPath /Path/To/Archive/name.ipa \
  -exportProvisioningProfile 'PROVISIONING_PROFILE_NAME'

这将在应用程序内重新嵌入配置文件,您实际上不需要再次指定代码签名身份,因为在存档过程中应该已经对存档进行了签名。

关于ios - xcodebuild不从.app复制文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23682083/

10-16 06:32
查看更多