ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS 앱 자동화 Fastlane Fastfile 작성 Cheatsheet
    개발/Swift 2024. 4. 29. 17:30

    프롬프트 활용 input 값 받아 사용하기

    ex> 출시노트에 사용될 텍스트 or 테스터 이메일 받아오기

        title = prompt(text: "출시 노트를 작성해 주세요\\n 개요: ")
        show_update_popup = prompt(text: "업데이트 팝업 노출 여부: ", boolean: true)
        description = prompt(text: "변경사항: ", multi_line_end_keyword: "END")
        testers = prompt(text: "테스터 이메일 입력: ", multi_line_end_keyword: "END")
    
    

    터미널에서 바로 입력하여 값 받아오기

      lane :beta_release do |options|
         version = options[:version]
        number = options[:number]
        
        //사용 fastlane beta_release version:1.1.1 number:3
    

    다른 레인으로 값 전달 하기

    상위 lane
    upload_to_firebase(title: title, show_update_popup: show_update_popup, description: description, environment: "staging", testers: testers)
    
    하위 lane
    lane :upload_to_firebase do |options|
    
    	title = options[:title]
    	show_update_popup = options[:show_update_popup]
    	description = options[:description]
    	environment = options[:environment]
    	testers = options[:testers]
    
    

    앱 버전, 빌드넘버 올리기

    increment_version 액션 사용시 infoPlist 를 버전값으로 수정해서 깔끔하게 버전 변경 되지 않음

    infoPlist 에서 버전값을 MARKETING_VERSION 으로 참조하고있어 맞지 않는 방식,

    MARKETING_VERSION 와 CURRENT_PROJECT_VERSION 를 직접 수정하여 버전 세팅하도록 정의

      desc "Set version and build number"
      lane :set_version do |options|
        version = options[:version]
        number = options[:number]
        project = Xcodeproj::Project.open("../xxxxxx.xcodeproj")//프로젝트명
    
        xc_target = project.targets.find { |target| target.name == "xxxxxx" } //타겟명
        xc_target.build_configurations.each { |build_configuration| 
    	unless version.nil? //input 값으로 version 정보 넣어줬을때만 수정
              build_configuration.build_settings["MARKETING_VERSION"] = version //여기서 바꿔줌
    	end
    	unless number.nil?
              build_configuration.build_settings["CURRENT_PROJECT_VERSION"] = number
    	end
        }
        project.save()
       
      end
    
    

    해당 하는 set_version 레인을 호출 후에 build_app() 액션 불러주면 됨

     set_version(options)
        build_app(workspace: "xxxxxx.xcworkspace", 
                  scheme: "xxxxxxscheme", 
                  configuration: "Release",
                  export_method: "app-store")
    

    테스트플라이트 등록

        upload_to_testflight(app_identifier: "번들아이디",
           			 skip_waiting_for_build_processing: true)
    
    

    이때 apple id , 비밀번호 정보가 없으면 authorization 에러 가 발생

    [Application Loader Error Output]: Unable to upload archive. Failed to get authorization for username 'XXXX' and password. (
    

    필요한데 해당 정보를 .env 파일에 정리 해줘야함 (https://appleid.apple.com/account/manage 에서 앱 암호 발급후 )

    //.env
    
    FASTLANE_USER = "애플아이디 이메일"
    FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD = "앱 암호"
    
    

    댓글

Designed by Tistory.