Automatically managesigning 의 fastlane 에 게시된 iOS 애플리케이션에 뒤지지 않음

8049 단어 fastlaneiOS
아, 달력 2017째 날.
in-house가 회사 내부에 분배될 때 반드시 팀을 변경해야 한다
다른 안건에서는 수탁 개발로 인증서와 프로비전닝 프로필만 받을 수 있는 경우가 많았다.
Target를 추가하면 오류가 발생할 수 있습니다...
Scheme 복사 및 배포 시 Archive 변경...
그런 일은 하지 말고 패스트라인으로 간단하게 나눠주거나 ippa를 만들어라.

대략적인 방법

  • 배포용 Configuration 만들기
  • xcconfig를 만들고 다양한 설정을 추가
  • 프로젝트 설정 변경
  • fastlane을 통한 팀 전환, Automatically managesiginning 설정 등
  • 그다음에 fastlane에/ippa만 올리면 돼요!
    fastlane

    fastrane 설치


    Qita에 좋은 기사가 있어서 생략!
    참조: 지금 시작

    다른 팀에서 어플리케이션 배포 설정


    in house용의 경우 먼저 Xcode에서 설정합니다.

    Configuration 추가


    InHouse 게시를 위한 Configuration을 추가합니다.
    Configuration 이름은 fastlane 의 설정에 사용됩니다.

    Cocorpods를 사용하는 경우 Configration용 xcconfig가 없기 때문에
    다음 명령을 사용하여 생성합니다.
    $ pod install
    

    xcconfig 만들기


    각 Configuration에 사용할 xcconfig를 만듭니다.
    Project navigator를 오른쪽 단추로 눌러 xcconfig의 그룹을 만들고 New File…를 선택합니다.
    Configuration Setting File을 선택하여 원하는 이름을 지정합니다.

    xcconfig 기술


    제작된 각 xcconfig에서 다음과 같은 설정을 합니다.
    -pod를 통한 xcconfig 읽기(Cocopods 사용 시)
    구성 - Bundle Identifier
    - 애플리케이션 이름 설정
    // CocoaPodsを使用している場合。パスは適宜置き換えてください。
    #include "Pods/Target Support Files/Pods-FastlaneTestApp/Pods-FastlaneTestApp.debug.xcconfig"
    
    // Bundle Identifier
    PRODUCT_BUNDLE_IDENTIFIER = jp.cloudpack.fastlane.debug
    // アプリ名
    PRODUCT_NAME = fastlane debug
    

    xcconfig 적용


    반영하기 위해 Project를 설정합니다.
    Project navigator에서 Project를 선택하여 각각 Configuration을 설정합니다.Cmd+B에 구축하여 경로가 정확한지 확인합니다.

    Project 설정


    xcconfig에 설정된 Bundle Identifierアプリ名는 직접적으로 반영되지 않았다.
    Build Setting을 통해 다음 항목$(inherited)을 설정합니다.
  • Product Bundle Identifier
  • Product Name

  • fastlane 구성


    fastrane 초기 설정


    다음 명령을 실행합니다.Username는 반드시 입력해야 하며, 다른 것은 입력하지 않아도 된다.
    fastlane init
    

    fastlane/Fastfile 편집


    다양한 경로, Configuration, 팀 ID 설명

    platform :ios do
    
      APP_SCHEME = "FastlaneTestApp"
      PLIST_PATH = "./" + APP_SCHEME + "/Info.plist"
      PROJECT_NAME = APP_SCHEME + ".xcodeproj"
    
      # Configurations
      IN_HOUSE = "InHouse"
      RELEASE = "Release"
    
      # for in-house
      TEAM_ID = "**********"
      IN_HOUSE_TEAM_ID = "**********"
    

    구축용 lane 추가


    매번 gym로 출력 주소와 파일 이름을 설정하는 것은 매우 번거롭다
    아래와 같은 privet랜을 자주 사용합니다.
    private_lane :build do |options|
      build = get_info_plist_value(path: PLIST_PATH, key: "CFBundleVersion")
      version = get_info_plist_value(path: PLIST_PATH, key: "CFBundleShortVersionString")
      scheme = options[:scheme] || APP_SCHEME
      config = options[:config] || IN_HOUSE
      method = options[:method] || "ad-hoc"
      include_bitcode = options[:include_bitcode] || false
    
      gym(
        clean: true,
        configuration: config,
        scheme: scheme,
        output_directory: "./fastlane/Build/#{build}_#{version}",
        output_name: "#{scheme}_#{config}_#{build}_#{version}",
        include_bitcode: include_bitcode,
        export_method: method
      )
    end
    

    배포용 LINE 만들기


    구축 전에 파티 ID를 전환하고 구축이 완료되면 원래의 파티로 돌아갑니다.
    lane :inhouse do
    
      # 配布用のチームIDに切り替える
      update_project_team(
        path: PROJECT_NAME,
        teamid: IN_HOUSE_TEAM_ID
      )
    
      # enterpriseを指定してビルド
      build(
        method: "enterprise"
      )
    
      # チームIDを戻す
      update_project_team(
        path: PROJECT_NAME,
        teamid: TEAM_ID
      )
    
      # DeployGateやCrashlyticsなどの設定はよしなに
      # deploygate(
      #   message: RELEASE_NOTE_DEV,
      #   api_token: "your api token"
      # )
    
      # ENV['CRASHLYTICS_API_TOKEN'] = "your api token"
      # ENV['CRASHLYTICS_BUILD_SECRET'] = "your build secret"
    
      # crashlytics(
      #   crashlytics_path: "./Pods/Crashlytics/iOS/Crashlytics.framework",
      #   notes: "notes",
      #   groups: ["group"]
      # )
    end
    

    응용 프로그램 게시


    랜을 실행하고 프로그램을 발표합니다.
    여느 때와 마찬가지로 배포용 증명서가 필요하다.
    $ fastlane inhouse
    

    release 버전ipa 파일 제작

    配布用証明書Provisioning Profile의상태만 있다.
    이대로 패스트라인으로 만들어도 팀에 합류하지 않아 만들 수 없다.
    저는 그냥 Automatically managesigning을 끄고 짓는 줄 알았어요.
    자동화하려면 각양각색의 설정이 필요하다.

    팀 ID, Provisioning Profile 이름 확인


    편집기에서 받은 .mobileprovision를 열고 각각 Name의 값과 TeamIdentifier의 값을 확인합니다.
    <key>Name</key>
    <string>fastlane test</string>
    <key>TeamIdentifier</key>
    <array>
      <string>**********</string>
    </array>
    

    Release.xcconfig로 설정


    Release.xcconfig에서 다음 내용을 보충합니다.
    PROVISIONING_PROFILE_SPECIFIER = fastlane test
    DEVELOPMENT_TEAM = ********** // TeamIdentifierの値
    

    BuildSettings 변경 사항


    Xcode에서 Build Settings를 열고 항목을 설정합니다.

    Code Signing Identity


    닫힌 후 배포되는 Configuration에서 설정iOS Distribution하려고 합니다.
    아래에 설명한 대로 설정하지 않으면 오류가 발생하여 잠시 빠져들게 됩니다.
    Automatically manage signing
    Any iOS SDK 설정
    열다
    iOS Developer
    닫기
    iOS Distribution

    Development Team


    닫을 때 배포할 Configuration$(inherited)만 설정합니다.
    값을 설정하려면 Other...를 선택합니다.

    Provisioning Profile 설정


    설정된 내용을 반영하면 된다.
    안에 다른 것이 있다면 설정해 주세요$(inherited).

    발매용ipa 제작용lane


    파티 ID 변경과 거의 동일, 빌딩 앞에서 Automaticallly managesigning 종료
    구문 후에 다시 엽니다.
    Google 선생님께 여쭤봤는데, 플러그인이 있습니다. fastlane-plugin-update_project_codesigning
    2.20.0에는fastlane를 사용하기 때문에 사용합니다.
    lane :release do
    
      # Automatic code signingをオフにする
      automatic_code_signing(
        path: PROJECT_NAME,
        use_automatic_signing: false
      )
    
      # app-store用にビルド
      build(
        config: RELEASE,
        method: "app-store"
      )
    
      # オンに戻す
      automatic_code_signing(
        path: PROJECT_NAME,
        use_automatic_signing: true
      )
    
    end
    

    만들다


    ippa를 만들기 위해 lane를 실행합니다.
    $ fastlane release
    

    총결산


    바쁜 시기가 되면 앱 출시 시간이 낭비된다
    미리 설정하면 이후(발매 전 등) 수월해진다.
    이번에는 닿지 않았지만 CI와의 호흡도 좋았다.

    좋은 웹페이지 즐겨찾기