我已经使用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/