본문으로 건너뛰기

Android Fastlane 활성화

안드로이드 프로젝트 폴더에서 명령어 실행

bundle exec fastlane init

프로젝트 패키지명과 Google Play Developer API 키 .json 파일의 경로를 입력

파일구조

Appfile

앱에 대한 정보를 표시

FastFile

fastlane의 설정 및 실행 과정에 대한 정보를 표시

FastFile 수정

완전한 자동화를 위해 수정

default_platform(:android)

platform :android do
# 버전 코드를 1 상승 시키기
def increment_version_code()
path = '../app/build.gradle'
re = /versionCode\s+(\d+)/

s = File.read(path)
versionCode = s[re, 1].to_i
s[re, 1] = (versionCode + 1).to_s

f = File.new(path, 'w')
f.write(s)
f.close
end

# 버전 숫자를 상승시키기
def increment_version_number(bump_type: nil, version_number: nil)
path = '../app/build.gradle'
re = /versionName\s+("\d+.\d+.\d+")/
s = File.read(path)
versionName = s[re, 1].gsub!('"','').split('.')

major = versionName[0].to_i
minor = versionName[1].to_i
patch = versionName[2].to_i

if (bump_type == 'major')
major += 1
minor = 0
patch = 0
elsif (bump_type == 'minor')
minor += 1
patch = 0
elsif (bump_type == 'patch')
patch += 1
end

if(version_number)
s[re, 1] = "\"#{version_number}\""
else
s[re, 1] = "\"#{major}.#{minor}.#{patch}\""
end

f = File.new(path, 'w')
f.write(s)
f.close
increment_version_code()
end

def updateVersion(options)
if options[:version]
version = options[:version]
else
version = prompt(text: "Enter the version type or specific version\n(major, minor, patch or 1.0.0): ")
end

re = /\d+.\d+.\d+/
versionNum = version[re, 0]

if (versionNum)
increment_version_number(
version_number: versionNum
)
elsif (version == 'major' || version == 'minor' || version == 'patch')
increment_version_number(
bump_type: version
)
else
UI.user_error!("[ERROR] Wrong version!!!!!!")
end
end

desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do |options|
updateVersion(options)

gradle(task: "clean bundleRelease")
upload_to_play_store(
skip_upload_metadata: true,
skip_upload_changelogs: true,
skip_upload_screenshots: true,
skip_upload_images: true,
skip_upload_apk: true,
track: 'internal'
)
end

desc "Deploy a new version to the Google Play"
lane :release do |options|
updateVersion(options)

gradle(task: "clean bundleRelease")
upload_to_play_store(
skip_upload_metadata: true,
skip_upload_changelogs: true,
skip_upload_screenshots: true,
skip_upload_images: true,
skip_upload_apk: true
)
end
end

베타버전 배포

fastlane beta version:patch

정식버전 배포

fastlane release version:patch