From 1154a6a52381bff4ab856ac9643b54a21facc968 Mon Sep 17 00:00:00 2001 From: Marcos Rodriguez Velez Date: Tue, 7 Jan 2025 15:14:51 -0400 Subject: [PATCH] Update Fastfile --- fastlane/Fastfile | 98 ++++++++++++++++++++++++----------------------- 1 file changed, 51 insertions(+), 47 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 94d0d210b..4cd71feed 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -36,55 +36,59 @@ platform :android do end end - desc "Update version, build number, and sign APK" + desc "Update version, build number, and sign APK" lane :update_version_build_and_sign_apk do - Dir.chdir(project_root) do - build_number = ENV['BUILD_NUMBER'] - UI.user_error!("BUILD_NUMBER environment variable is missing") if build_number.nil? - - # Extract versionName from build.gradle - version_name = sh("grep versionName android/app/build.gradle | awk '{print $2}' | tr -d '\"'").strip - - # Update versionCode in build.gradle - UI.message("Updating versionCode in build.gradle to #{build_number}...") - build_gradle_path = "android/app/build.gradle" - build_gradle_contents = File.read(build_gradle_path) - new_build_gradle_contents = build_gradle_contents.gsub(/versionCode\s+\d+/, "versionCode #{build_number}") - File.write(build_gradle_path, new_build_gradle_contents) - - # Determine branch name and sanitize it - branch_name = ENV['GITHUB_HEAD_REF'] || `git rev-parse --abbrev-ref HEAD`.strip.gsub(/[^a-zA-Z0-9_-]/, '_') - branch_name = 'master' if branch_name.nil? || branch_name.empty? - - # Define APK name based on branch - signed_apk_name = branch_name != 'master' ? - "BlueWallet-#{version_name}-#{build_number}-#{branch_name}.apk" : - "BlueWallet-#{version_name}-#{build_number}.apk" - - # Define paths - unsigned_apk_path = "android/app/build/outputs/apk/release/app-release-unsigned.apk" - signed_apk_path = "android/app/build/outputs/apk/release/#{signed_apk_name}" - - # Build APK - UI.message("Building APK...") - sh("cd android && ./gradlew assembleRelease") - UI.message("APK build completed.") - - # Rename APK - if File.exist?(unsigned_apk_path) - UI.message("Renaming APK to #{signed_apk_name}...") - FileUtils.mv(unsigned_apk_path, signed_apk_path) - ENV['APK_OUTPUT_PATH'] = File.expand_path(signed_apk_path) - else - UI.error("Unsigned APK not found at path: #{unsigned_apk_path}") - next + Dir.chdir(project_root) do + build_number = ENV['BUILD_NUMBER'] + UI.user_error!("BUILD_NUMBER environment variable is missing") if build_number.nil? + + # Extract versionName from build.gradle + version_name = sh("grep versionName android/app/build.gradle | awk '{print $2}' | tr -d '\"'").strip + UI.user_error!("Failed to extract versionName from build.gradle") if version_name.nil? || version_name.empty? + + # Update versionCode in build.gradle + UI.message("Updating versionCode in build.gradle to #{build_number}...") + build_gradle_path = "android/app/build.gradle" + build_gradle_contents = File.read(build_gradle_path) + new_build_gradle_contents = build_gradle_contents.gsub(/versionCode\s+\d+/, "versionCode #{build_number}") + File.write(build_gradle_path, new_build_gradle_contents) + + # Determine branch name and sanitize it + branch_name = ENV['GITHUB_HEAD_REF'] || `git rev-parse --abbrev-ref HEAD`.strip + branch_name = branch_name.gsub(/[^a-zA-Z0-9_-]/, '_') # Replace non-alphanumeric characters with underscore + branch_name = 'master' if branch_name.nil? || branch_name.empty? + + # Define APK name based on branch + signed_apk_name = branch_name != 'master' ? + "BlueWallet-#{version_name}-#{build_number}-#{branch_name}.apk" : + "BlueWallet-#{version_name}-#{build_number}.apk" + + # Define paths + unsigned_apk_path = "android/app/build/outputs/apk/release/app-release-unsigned.apk" + signed_apk_path = "android/app/build/outputs/apk/release/#{signed_apk_name}" + + # Build APK + UI.message("Building APK...") + sh("cd android && ./gradlew assembleRelease --no-daemon") + UI.message("APK build completed.") + + # Rename APK + if File.exist?(unsigned_apk_path) + UI.message("Renaming APK to #{signed_apk_name}...") + FileUtils.mv(unsigned_apk_path, signed_apk_path) + ENV['APK_OUTPUT_PATH'] = File.expand_path(signed_apk_path) + else + UI.error("Unsigned APK not found at path: #{unsigned_apk_path}") + next + end + + # Sign APK + UI.message("Signing APK with apksigner...") + apksigner_path = Dir.glob("#{ENV['ANDROID_HOME']}/build-tools/*/apksigner").sort.last + UI.user_error!("apksigner not found in Android build-tools") if apksigner_path.nil? || apksigner_path.empty? + sh("#{apksigner_path} sign --ks #{project_root}/bluewallet-release-key.keystore --ks-pass=pass:#{ENV['KEYSTORE_PASSWORD']} #{signed_apk_path}") + UI.message("APK signed successfully: #{signed_apk_path}") end - - # Sign APK - UI.message("Signing APK with apksigner...") - apksigner_path = "#{ENV['ANDROID_HOME']}/build-tools/34.0.0/apksigner" - sh("#{apksigner_path} sign --ks #{project_root}/bluewallet-release-key.keystore --ks-pass=pass:#{ENV['KEYSTORE_PASSWORD']} #{signed_apk_path}") - UI.message("APK signed successfully: #{signed_apk_path}") end end