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

使用fastlane构建具有通知扩展的iOS应用程序,ios,provisioning,fastlane,Ios,Provisioning,Fastlane,我最近在我的应用程序中添加了一个通知扩展,该应用程序是用fastlane构建的。添加通知扩展后,由于某些代码签名问题,建筑总是失败 构建我的应用程序并将其上载到TestFlight的通道是: lane :beta do increment_build_number( build_number: latest_testflight_build_number + 1, xcodeproj: "ios.xcodeproj"

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

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

    lane :beta do
         increment_build_number(
            build_number: latest_testflight_build_number + 1,
            xcodeproj: "ios.xcodeproj"
         )
         match(app_identifier: ["my.app.bundleid", "my.app.bundleid.extension" type: "appstore") 
         gym(scheme: "prod")
         ENV["DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS"] = "-t DAV"
         pilot(
           skip_submission: true,
           skip_waiting_for_build_processing: true
         ) 
    end
我已经为这两个捆绑ID创建了应用ID和配置配置文件,并为它们启用了推送通知

即使我在运行
fastlane beta版后出现以下错误:

[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' 
+ 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
2018-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'.
2018-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=(
"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.}"
)}
error: exportArchive: "prod.app" requires a provisioning profile with the Push Notifications feature.

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.}

** EXPORT FAILED **
[19:13:26]: Exit status: 70
[19:13:26]: No provisioning profile provided
[19:13:26]: Make sure to pass a valid provisioning for each required target
[19:13:26]: Check out the docs on how to fix this: https://docs.fastlane.tools/actions/gym/#export-options
[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-exportoptions plist'/var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4\ut/gym\u config20180601-5305-a3y0ow.plist'-archive'-archive/Users/viktor.plezer/Library/Developer/Xcode/archive/2018-01/2018-06-01\19.07-exportPath'/var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4\/T/gym\'u输出20180601-5305-ghy31c'
+xcodebuild-exportArchive-exportoptions plist/var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4\uuu/T/gym\u config20180601-5305-a3y0ow.plist-archivePath'/Users/viktor.plezer/Library/Developer/Xcode/Archives/2018-06-01/prod 2018-06-01 19.07.57.xccarchive'-exportPath/var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4\fy4t4/T/T/gy\u20180601
2018-06-01 19:13:21.181 xcodebuild[7741:1606819][MT]IDEDistribution:[IDEDistributionLogging\u createLoggingBundleAtPath:]:在路径“/var/folders/vq/j6j2lh1s3cz7cbpw7shc9149fy4t4\u/prod\u 2018-06-01\u 19-13-21.180.xdistributionlogs”处创建的包。
2018-06-01 19:13:25.613 xcodebuild[7741:1606819][MT]IDEDistribution:步骤失败::错误域=IDEDistributionSigningAssetStepErrorDomain代码=0“查找签名资产失败”。用户信息={NSLocalizedDescription=查找签名资产失败,IDEDistributionSigningAssetStepUnderingErrors=(
“Error Domain=IDEProvisioningErrorDomain Code=9\”\“prod.app\”需要具有推送通知功能的配置文件。\“UserInfo={NSLocalizedDescription=\“prod.app\”需要具有推送通知功能的配置文件。。NSLocalizedRecoverySuggestion=将配置文件添加到“provisioningProfiles”\“导出选项属性列表中的字典。}”
)}
错误:exportArchive:“prod.app”需要具有推送通知功能的配置文件。
Error Domain=IDEProvisioningErrorDomain Code=9“prod.app”需要具有推送通知功能的配置文件。“UserInfo={NSLocalizedDescription=“prod.app”需要具有推送通知功能的配置文件。nsLocalizedRecoverysSuggestion=将配置文件添加到“provisioningProfiles”“导出选项属性列表中的字典。}
**导出失败**
[19:13:26]:退出状态:70
[19:13:26]:未提供配置文件
[19:13:26]:确保为每个所需目标通过有效的资源调配
[19:13:26]:查看有关如何解决此问题的文档:https://docs.fastlane.tools/actions/gym/#export-选择权
我已将这两个捆绑ID添加到我的匹配文件中,fastlane可以正确下载证书

provisioningProfiles目录看起来像:

INFO [2018-06-01 20:08:45.03]: ▸ <?xml version="1.0" encoding="UTF-8"?>
INFO [2018-06-01 20:08:45.03]: ▸ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
INFO [2018-06-01 20:08:45.03]: ▸ <plist version="1.0">
INFO [2018-06-01 20:08:45.03]: ▸ <dict>
INFO [2018-06-01 20:08:45.03]: ▸    <key>method</key>
INFO [2018-06-01 20:08:45.03]: ▸    <string>app-store</string>
INFO [2018-06-01 20:08:45.03]: ▸    <key>provisioningProfiles</key>
INFO [2018-06-01 20:08:45.03]: ▸    <dict>
INFO [2018-06-01 20:08:45.03]: ▸        <key>my.app.bundleid.extension</key>
INFO [2018-06-01 20:08:45.03]: ▸        <string>match AppStore my.app.bundleid.extension</string>
INFO [2018-06-01 20:08:45.03]: ▸        <key>my.app.bundleid</key>
INFO [2018-06-01 20:08:45.03]: ▸        <string>match AppStore my.app.bundleid</string>
INFO [2018-06-01 20:08:45.03]: ▸    </dict>
INFO [2018-06-01 20:08:45.03]: ▸    <key>signingStyle</key>
INFO [2018-06-01 20:08:45.03]: ▸    <string>manual</string>
INFO [2018-06-01 20:08:45.03]: ▸ </dict>
INFO [2018-06-01 20:08:45.03]: ▸ </plist>
INFO [2018-06-01 20:08:45.03]: ▸ -----------------------------------------
INFO[2018-06-01 20:08:45.03]:▸ 
信息[2018-06-01 20:08:45.03]:▸ 
信息[2018-06-01 20:08:45.03]:▸ 
信息[2018-06-01 20:08:45.03]:▸ 
信息[2018-06-01 20:08:45.03]:▸    方法
信息[2018-06-01 20:08:45.03]:▸    应用商店
信息[2018-06-01 20:08:45.03]:▸    供应文件
信息[2018-06-01 20:08:45.03]:▸    
信息[2018-06-01 20:08:45.03]:▸        my.app.bundleid.extension
信息[2018-06-01 20:08:45.03]:▸        匹配AppStore my.app.bundleid.extension
信息[2018-06-01 20:08:45.03]:▸        my.app.bundleid
信息[2018-06-01 20:08:45.03]:▸        匹配应用商店my.app.bundleid
信息[2018-06-01 20:08:45.03]:▸    
信息[2018-06-01 20:08:45.03]:▸    签约风格
信息[2018-06-01 20:08:45.03]:▸    手册
信息[2018-06-01 20:08:45.03]:▸ 
信息[2018-06-01 20:08:45.03]:▸ 
信息[2018-06-01 20:08:45.03]:▸ -----------------------------------------

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

这正是我收到的错误,而我的问题是扩展名的plist文件中的
CbundleIdentifier
的值无效。我将其更改为以下内容后,构建成功:

<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
CbundleIdentifier
$(产品\捆绑包\标识符)

嘿,布拉德!不幸的是,我不再能够访问出现问题的项目,但作为这个问题的唯一回答者,我接受你的回答!:)@毒蛇谢谢!:-)在我的情况下,我只是有一个糟糕的配置。我弄乱了pbxproj文件并丢失了产品包标识符,因此$(产品包标识符)是空的&把一切都搞乱了。