使用带有 fastlane 的通知扩展构建 iOS 应用程序

vip*_*zer 5 provisioning ios fastlane

我最近在我的应用程序中添加了一个通知扩展,该扩展使用 fastlane 构建得很好。添加通知扩展后,由于某些代码签名问题,构建总是失败。

\n\n

构建我的应用程序并将其上传到 TestFlight 的通道是:

\n\n
    lane :beta do\n         increment_build_number(\n            build_number: latest_testflight_build_number + 1,\n            xcodeproj: "ios.xcodeproj"\n         )\n         match(app_identifier: ["my.app.bundleid", "my.app.bundleid.extension" type: "appstore") \n         gym(scheme: "prod")\n         ENV["DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS"] = "-t DAV"\n         pilot(\n           skip_submission: true,\n           skip_waiting_for_build_processing: true\n         ) \n    end\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经为两个捆绑 ID 创建了应用程序 ID 和配置文件,并且为它们启用了推送通知。

\n\n

即使我在运行后收到以下错误fastlane beta

\n\n
[19:13:20]: $ /usr/bin/xcrun /Library/Ruby/Gems/2.3.0/gems/fastlane-2.96.1/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh -exportArchive -exportOptionsPlist \'/var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4_/T/gym_config20180601-5305-a3y0ow.plist\' -archivePath /Users/viktor.plezer/Library/Developer/Xcode/Archives/2018-06-01/prod\\ 2018-06-01\\ 19.07.57.xcarchive -exportPath \'/var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4_/T/gym_output20180601-5305-ghy31c\' \n+ xcodebuild -exportArchive -exportOptionsPlist /var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4_/T/gym_config20180601-5305-a3y0ow.plist -archivePath \'/Users/viktor.plezer/Library/Developer/Xcode/Archives/2018-06-01/prod 2018-06-01 19.07.57.xcarchive\' -exportPath /var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4_/T/gym_output20180601-5305-ghy31c\n2018-06-01 19:13:21.181 xcodebuild[7741:1606819] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path \'/var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4_/T/prod_2018-06-01_19-13-21.180.xcdistributionlogs\'.\n2018-06-01 19:13:25.613 xcodebuild[7741:1606819] [MT] IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7ff969a6c950>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed." UserInfo={NSLocalizedDescription=Locating signing assets failed., IDEDistributionSigningAssetStepUnderlyingErrors=(\n"Error Domain=IDEProvisioningErrorDomain Code=9 \\"\\"prod.app\\" requires a provisioning profile with the Push Notifications feature.\\" UserInfo={NSLocalizedDescription=\\"prod.app\\" requires a provisioning profile with the Push Notifications feature., NSLocalizedRecoverySuggestion=Add a profile to the \\"provisioningProfiles\\" dictionary in your Export Options property list.}"\n)}\nerror: exportArchive: "prod.app" requires a provisioning profile with the Push Notifications feature.\n\nError Domain=IDEProvisioningErrorDomain Code=9 ""prod.app" requires a provisioning profile with the Push Notifications feature." UserInfo={NSLocalizedDescription="prod.app" requires a provisioning profile with the Push Notifications feature., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}\n\n** EXPORT FAILED **\n[19:13:26]: Exit status: 70\n[19:13:26]: No provisioning profile provided\n[19:13:26]: Make sure to pass a valid provisioning for each required target\n[19:13:26]: Check out the docs on how to fix this: https://docs.fastlane.tools/actions/gym/#export-options\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已将两个捆绑 ID 添加到我的 Matchfile 中,fastlane 可以正确下载证书。

\n\n

ProvisioningProfiles 字典看起来像:

\n\n
INFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8 <?xml version="1.0" encoding="UTF-8"?>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8 <plist version="1.0">\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8 <dict>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8    <key>method</key>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8    <string>app-store</string>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8    <key>provisioningProfiles</key>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8    <dict>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8        <key>my.app.bundleid.extension</key>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8        <string>match AppStore my.app.bundleid.extension</string>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8        <key>my.app.bundleid</key>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8        <string>match AppStore my.app.bundleid</string>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8    </dict>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8    <key>signingStyle</key>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8    <string>manual</string>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8 </dict>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8 </plist>\nINFO [2018-06-01 20:08:45.03]: \xe2\x96\xb8 -----------------------------------------\n
Run Code Online (Sandbox Code Playgroud)\n\n

为什么 fastlane 开始搜索 prod.app 而不是 my.app.bundleid 的配置文件?

\n

Bra*_*her 2

这正是我收到的错误,我的情况是CFBundleIdentifier扩展的 plist 文件中的值无效。当我将其更改为以下内容后,构建成功:

<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,我只是配置不好。我搞乱了 pbxproj 文件并缺少 PRODUCT_BUNDLE_IDENTIFIER,因此 $(Product_BUNDLE_IDENTIFIER) 为空并搞乱了一切。 (2认同)