Mik*_*ler 33 xcode xcodebuild ios
概观
我们的命令行构建(构建和创建.ipa)不再有效.
iTunesConnect已开始拒绝使用CODE_SIGN_RESOURCE_RULES_PATH构建设置的构建.
如果我们构建没有该设置,则PackageApplication工具(我们用于创建签名的.ipa)失败.
似乎PackageApplication使用resource-rules参数调用/ usr/bin/codesign,即使CODE_SIGN_RESOURCE_RULES_PATH排除了构建设置也是如此
我怀疑PackageApplication需要更新,以便在CODE_SIGN_RESOURCE_RULES_PATH排除构建设置时不会使用resource-rules参数调用/ usr/bin/codesign .
有人找到了解决方案吗?
细节
我们在命令行上构建我们的应用程序,如下所示:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO 'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist'
Run Code Online (Sandbox Code Playgroud)
我们在命令行上创建签名的.ipa,如下所示:
xcrun -log -sdk iphoneos PackageApplication "/Users/mpv/dev/myApp/build/AppStoreDistribution-iphoneos/myApp.app" -o "/Users/mpv/dev/myApp/build/AppStoreDistribution-iphoneos/myApp.ipa" -sign "iPhone Distribution: MyTeam (XXXXXXXXXX)" -embed /Users/mpv/Library/MobileDevice/Provisioning\ Profiles/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mobileprovision
Run Code Online (Sandbox Code Playgroud)
iTunesConnect现在拒绝我们的构建,并出现以下错误:
"此捆绑包无效.Info.plist包含myApp [myApp.app]包中的无效密钥'CFBundleResourceSpecification'"
如果我们'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist'从构建命令中删除该位,那么应用程序是在没有CFBundleResourceSpecificationplist键的情况下构建的(我认为这是我们想要的).新的构建命令如下所示:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO
Run Code Online (Sandbox Code Playgroud)
现在的问题是构建.ipa的命令失败,出现以下错误:
错误:/ usr/bin/codesign --force --preserve-metadata = identifier,entitlements,resource-rules --sign iPhone Distribution:MyTeam(XXXXXXXXXX)--resource-rules =/var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T /zDRRJMkKtQ/Payload/myApp.app/ResourceRules.plist --entitlements/var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/entitlements_plistIUdGWLYe /var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/Payload/myApp.app失败并出现错误1.输出:警告:使用带有"resource-rules"选项的--preserve-metadata(在Mac OS X中不推荐使用> = 10.10)!
警告:在Mac OS X中,不推荐使用--resource-rules> = 10.10!/var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/Payload/myApp.app/ResourceRules.plist:无法读取资源
即使CODE_SIGN_RESOURCE_RULES_PATH排除了参数/构建设置,PackageApplication似乎也会使用resource-rules参数调用/ usr/bin/codesign .
我认为PackageApplication需要更新,以便CODE_SIGN_RESOURCE_RULES_PATH在排除参数/构建设置时不会使用resource-rules参数调用/ usr/bin/codesign .
Mik*_*ler 104
Apple通过解决方案回复了我.从Xcode 7开始,我们应该使用xcodebuild而不是PackageApplication生成.ipa文件.
xcodebuild有一个新的-exportArchive选项来创建一个更像Xcode Organizer的.ipa.
所以我们现在应该:
xcodebuild archivexcodebuild -exportArchive我们现在构建这样的存档:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution archive -archivePath $PWD/build/myApp.xcarchive
Run Code Online (Sandbox Code Playgroud)
我们现在导出.ipa像这样:
xcodebuild -exportArchive -archivePath $PWD/build/myApp.xcarchive -exportOptionsPlist exportOptions.plist -exportPath $PWD/build
Run Code Online (Sandbox Code Playgroud)
这两个命令创建文件build/myApp.xcarchive和build/myApp.ipa
请注意,xcodebuild -exportArchive需要一个-exportOptionsPlist指向带有导出选项的.plist文件的参数.有关您可以放入该plist的完整列表,请运行xcodebuild -help.该文件的最小内容如下所示:
<?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>method</key>
<string>app-store</string>
<key>teamID</key>
<string>YOUR_TEN_CHARACTER_TEAM_ID</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
在Xcode 9中,您现在必须在exportOptions.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>compileBitcode</key>
<false/>
<key>method</key>
<string>ad-hoc</string>
<key>provisioningProfiles</key>
<dict>
<key>my.bundle.idenifier</key>
<string>My Provisioning Profile Name</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Distribution</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>YOURTEAMID</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
Dev*_*esh 14
制作iPA Usig终端的步骤
清洁项目:
发布
xcodebuild clean -project ProjectPath/myApp.xcodeproj -configuration ReleaseAdhoc -alltargets
Run Code Online (Sandbox Code Playgroud)
调试
xcodebuild clean -project ProjectPath/myApp.xcodeproj -configuration Debug -alltargets
Run Code Online (Sandbox Code Playgroud)
档案项目:
调试
xcodebuild archive -project ProjectPath/myApp.xcodeproj -scheme “myApp” -configuration Debug -archivePath pathForArchiveFolder/myApp.xcarchive
Run Code Online (Sandbox Code Playgroud)
发布
xcodebuild archive -project ProjectPath/myApp.xcodeproj -scheme “myApp” -archivePath pathForArchiveFolder/myApp.xcarchive
Run Code Online (Sandbox Code Playgroud)
出口IPA
旧版本:这可能会添加,修改或删除已签名的资源.错误
xcodebuild -exportArchive -archivePath projectPath/myapp.xcarchive -exportPath projectPath/myApp.ipa -exportFormat ipa -exportProvisioningProfile “provisioning profile”
Run Code Online (Sandbox Code Playgroud)
新版本:
xcodebuild -exportArchive -archivePath ProjectPath/myapp.xcarchive -exportPath projectPath/myApp.ipa -exportOptionsPlist ProjectFolder/exportPlist.plist
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22782 次 |
| 最近记录: |