3

通常の fastlane と CocoaPods のセットアップがありますが、fastlane はアプリのプロビジョニング プロファイルを使用して各 CocoaPod に署名しようとするため、コード署名に問題があります。次のエラーで失敗します。

[03:21:05]: [SHELL COMMAND]: set -o pipefail && krausefx-ipa build -w "MyApp.xcworkspace" -c "Release" -s "MyApp" --xcargs "PROVISIONING_PROFILE=g7ba10c8-cddd-490e-8eab-7ef35a511565 PRODUCT_BUNDLE_IDENTIFIER=com.example.MyApp" --no-clean --archive -d "/Users/app/Deployment" --ipa "MyApp.ipa" -m "/Users/app/Deployment/MyApp-distribution.mobileprovision" --verbose | xcpretty
[03:21:07]: [SHELL]: ▸ Building Pods/CocoaLumberjack [Release]
[03:21:07]: [SHELL]: 
[03:21:07]: [SHELL]: ⌦  Code Sign error: Provisioning profile does not match bundle identifier: The provisioning profile specified in your build settings (“com.example.MyApp Distribution”) has an AppID of “com.example.MyApp” which does not match your bundle identifier “org.cocoapods.CocoaLumberjack”.
...
[03:21:08]: [SHELL]: ** ARCHIVE FAILED **
[03:21:08]: [SHELL]: 
[03:21:08]: [SHELL]: 
[03:21:08]: [SHELL]: The following build commands failed:
[03:21:08]: [SHELL]: Check dependencies
[03:21:08]: [SHELL]: Check dependencies
[03:21:08]: [SHELL]: (2 failures)

CocoaPods に署名しないように ipa/shenzhen に指示する方法はありますか?


CocoaPods は動的フレームワークとして構築されます。これは Podfile です:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'CocoaLumberjack', '2.0.0'
pod 'HexColors', '~> 2.3'

これは Fastfile です。

require 'fileutils'
require 'shellwords'

fastlane_version "1.12.0"

default_platform :ios

output_directory = File.expand_path('../Deployment')

platform :ios do

  before_all do
    FileUtils.mkdir_p(output_directory)
  end

  lane :production do
    sigh(
      output_path: output_directory,
      filename: "MyApp-distribution.mobileprovision",
    )

    xcodebuild_args = {
      PROVISIONING_PROFILE: Actions.lane_context[Actions::SharedValues::SIGH_UDID],
      PRODUCT_BUNDLE_IDENTIFIER: "com.example.MyApp",
    }
    xcodebuild_args = xcodebuild_args.map do |k,v|
      "#{k.to_s.shellescape}=#{v.shellescape}"
    end.join ' '

    ipa(
      workspace: "MyApp.xcworkspace",
      configuration: "Release",
      scheme: "MyApp",
      xcargs: xcodebuild_args,
      clean: false,
      archive: true,
      destination: output_directory,
      ipa: "MyApp.ipa",
    )
  end
end
4

1 に答える 1

2

PROVISIONING_PROFILEこの問題を修正する代わりに、カスタム環境変数を使用します。この手法は、コード署名に関する fastlane ドキュメントで説明されています。

これらは、Xcode 6 で機能する手順です。

カスタム変数を Xcode プロジェクトに追加する

Xcode pbxproj ファイルで、PROVISIONING_PROFILE の値を のような別の変数に設定します$(APP_PROVISIONING_PROFILE)。任意の一意のカスタム変数を選択できます。プロジェクトのコード署名セクションは次のようになります。

コード署名

Fastfile でカスタム変数を定義する

Fastfile でカスタム変数を定義し、それをipa他の xcargs と共にアクションに渡します。質問のサンプル コードでは、次のようになります。

xcodebuild_args = {
  # Define the custom variable instead of PROVISIONING_PROFILE
  APP_PROVISIONING_PROFILE: Actions.lane_context[Actions::SharedValues::SIGH_UDID],
  PRODUCT_BUNDLE_IDENTIFIER: "com.example.MyApp",
}

これで、この特定のエラーを修正できます。

于 2015-08-17T20:20:40.063 に答える