@@ -10,7 +10,7 @@ GRADLEW = File.join(PROJECT_ROOT, 'gradlew')
1010LOCAL_PROPS = File . join ( PROJECT_ROOT , 'local.properties' )
1111AAB_PATH = File . join ( APP_DIR , 'build' , 'outputs' , 'bundle' , 'release' , 'app-release.aab' )
1212APK_PATH = File . join ( APP_DIR , 'build' , 'outputs' , 'apk' , 'debug' , 'app-debug.apk' )
13- RELEASE_NOTES_FILE = File . join ( PROJECT_ROOT , 'RELEASE_NOTES.txt' )
13+
1414
1515platform :android do
1616 desc "빌드 환경 설정 (local.properties 생성)"
@@ -337,26 +337,24 @@ platform :android do
337337 File . write ( service_account_path , ENV [ "GOOGLE_PLAY_SERVICE_ACCOUNT_JSON" ] )
338338 File . chmod ( 0600 , service_account_path )
339339
340- # 릴리즈 노트 파일 찾기 (프로젝트 루트의 RELEASE_NOTES.txt )
341- release_notes_path = RELEASE_NOTES_FILE
340+ # 릴리즈 노트 로드 (헬퍼 사용 )
341+ release_notes = load_release_notes ( version )
342342
343- unless File . exist? ( release_notes_path )
344- UI . important ( "⚠️ RELEASE_NOTES.txt 파일을 찾을 수 없습니다." )
345- UI . important ( "⚠️ Play Store 릴리즈 노트 없이 배포됩니다." )
346- release_notes_path = nil
347- else
348- release_notes_content = File . read ( release_notes_path ) . strip
349- if release_notes_content . empty?
350- UI . error ( "❌ RELEASE_NOTES.txt 파일이 비어있습니다. Play Store 정책에 따라 배포가 거절될 수 있습니다." )
351- release_notes_path = nil
352- elsif release_notes_content . length < 10
353- UI . error ( "❌ RELEASE_NOTES.txt 내용이 너무 짧습니다. 최소 10자 이상 필요합니다." )
354- release_notes_path = nil
355- else
356- UI . message ( "📝 Play Store 릴리즈 노트 파일 발견: #{ release_notes_path } " )
357- UI . message ( "📄 릴리즈 노트 내용:" )
358- UI . message ( release_notes_content )
343+ # 메타데이터 임시 디렉토리 생성
344+ require 'tmpdir'
345+ require 'fileutils'
346+ metadata_dir = Dir . mktmpdir ( "fastlane_metadata" )
347+
348+ if release_notes
349+ release_notes . each do |locale , text |
350+ # 디렉토리 생성: metadata/locale/changelogs
351+ changelog_dir = File . join ( metadata_dir , locale , "changelogs" )
352+ FileUtils . mkdir_p ( changelog_dir )
353+
354+ # default.txt 작성
355+ File . write ( File . join ( changelog_dir , "default.txt" ) , text )
359356 end
357+ UI . message ( "📝 메타데이터(릴리즈 노트) 생성 완료: #{ metadata_dir } " )
360358 end
361359
362360 begin
@@ -366,27 +364,25 @@ platform :android do
366364 json_key : service_account_path ,
367365 skip_upload_apk : true ,
368366 skip_upload_metadata : true ,
367+ # 메타데이터 경로 지정 (릴리즈 노트 포함)
368+ metadata_path : metadata_dir ,
369369 skip_upload_images : true ,
370370 skip_upload_screenshots : true
371371 }
372372
373- # 릴리즈 노트 파일이 있으면 추가
374- if release_notes_path && File . exist? ( release_notes_path )
375- upload_params [ :release_notes_file ] = release_notes_path
376- end
377-
378373 upload_to_play_store ( upload_params )
379374
380375 UI . success ( "✅ Play Store #{ track } 트랙에 배포 완료" )
381- if release_notes_path
376+ if release_notes
382377 UI . success ( "✅ Play Store 릴리즈 노트 업데이트 완료" )
383378 end
384379 rescue => ex
385380 UI . important ( "⚠️ Play Store 배포 중 오류 발생: #{ ex . message } " )
386381 raise
387382 ensure
388- # 임시 파일 삭제
383+ # 임시 파일 및 디렉토리 삭제
389384 File . delete ( service_account_path ) if File . exist? ( service_account_path )
385+ FileUtils . remove_entry ( metadata_dir ) if File . exist? ( metadata_dir )
390386 end
391387 elsif deploy_to_play_store
392388 UI . important ( "⚠️ GOOGLE_PLAY_SERVICE_ACCOUNT_JSON이 설정되지 않아 Play Store 배포를 건너뜁니다." )
0 commit comments