From 66646922b8403cdd641db9f6eec6ba15508c6fd2 Mon Sep 17 00:00:00 2001 From: polstianka Date: Sat, 27 Jul 2024 07:04:47 -0700 Subject: [PATCH 1/3] cd --- fastlane/Appfile | 0 fastlane/Fastfile | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 fastlane/Appfile create mode 100644 fastlane/Fastfile diff --git a/fastlane/Appfile b/fastlane/Appfile new file mode 100644 index 000000000..e69de29bb diff --git a/fastlane/Fastfile b/fastlane/Fastfile new file mode 100644 index 000000000..e69de29bb From 0e222d726f96fc43839376c01cd298335a2db1df Mon Sep 17 00:00:00 2001 From: polstianka Date: Sat, 27 Jul 2024 07:16:05 -0700 Subject: [PATCH 2/3] udp --- apps/wallet/instance/main/build.gradle.kts | 26 ++-- build.gradle.kts | 30 +++++ buildSrc/src/main/kotlin/Signing.kt | 10 ++ .../main/debug.keystore => debug.keystore | Bin fastlane/Appfile | 1 + fastlane/Fastfile | 117 ++++++++++++++++++ 6 files changed, 169 insertions(+), 15 deletions(-) create mode 100644 buildSrc/src/main/kotlin/Signing.kt rename apps/wallet/instance/main/debug.keystore => debug.keystore (100%) diff --git a/apps/wallet/instance/main/build.gradle.kts b/apps/wallet/instance/main/build.gradle.kts index 749bf074d..8579807dd 100644 --- a/apps/wallet/instance/main/build.gradle.kts +++ b/apps/wallet/instance/main/build.gradle.kts @@ -21,21 +21,6 @@ android { versionName = "4.7.2-x" } - signingConfigs { - getByName("release") { - storeFile file(project.property('android.injected.signing.store.file')) - storePassword project.property('android.injected.signing.store.password') - keyAlias project.property('android.injected.signing.key.alias') - keyPassword project.property('android.injected.signing.key.password') - } - getByName("debug") { - keyAlias = "androiddebugkey" - keyPassword = "android" - storeFile = file("debug.keystore") - storePassword = "android" - } - } - buildFeatures { buildConfig = true } @@ -48,6 +33,17 @@ android { getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) + signingConfig = signingConfigs.getByName("release") + postprocessing { + isObfuscate = true + isOptimizeCode = true + isRemoveUnusedCode = true + isRemoveUnusedResources = true + } + } + debug { + isMinifyEnabled = false + signingConfig = signingConfigs.getByName("debug") } } diff --git a/build.gradle.kts b/build.gradle.kts index f785ccd91..6f18f1ab3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,5 @@ +import com.android.build.gradle.AppExtension + plugins { id("com.android.application") version "8.5.1" apply false id("org.jetbrains.kotlin.android") version "2.0.0" apply false @@ -9,3 +11,31 @@ plugins { id("androidx.baselineprofile") version "1.2.4" id("org.jetbrains.kotlin.jvm") version "1.9.0" apply false } + +allprojects { + pluginManager.withPlugin("android") { + configure { + signingConfigs { + create("release") { + if (project.hasProperty("android.injected.signing.store.file")) { + storeFile = file(project.property("android.injected.signing.store.file").toString()) + storePassword = project.property("android.injected.signing.store.password").toString() + keyAlias = project.property("android.injected.signing.key.alias").toString() + keyPassword = project.property("android.injected.signing.key.password").toString() + } + } + + getByName("debug") { + storeFile = file("${project.rootDir.path}/${Signing.Debug.storeFile}") + storePassword = Signing.Debug.storePassword + keyAlias = Signing.Debug.keyAlias + keyPassword = Signing.Debug.keyPassword + } + } + } + } +} + +tasks.register("clean") { + delete(getLayout().buildDirectory) +} diff --git a/buildSrc/src/main/kotlin/Signing.kt b/buildSrc/src/main/kotlin/Signing.kt new file mode 100644 index 000000000..e7a13e4b3 --- /dev/null +++ b/buildSrc/src/main/kotlin/Signing.kt @@ -0,0 +1,10 @@ +object Signing { + + object Debug { + const val storeFile = "debug.keystore" + const val storePassword = "android" + const val keyAlias = "androiddebugkey" + const val keyPassword = "android" + + } +} \ No newline at end of file diff --git a/apps/wallet/instance/main/debug.keystore b/debug.keystore similarity index 100% rename from apps/wallet/instance/main/debug.keystore rename to debug.keystore diff --git a/fastlane/Appfile b/fastlane/Appfile index e69de29bb..c931172e9 100644 --- a/fastlane/Appfile +++ b/fastlane/Appfile @@ -0,0 +1 @@ +app_identifier('com.ton_keeper') \ No newline at end of file diff --git a/fastlane/Fastfile b/fastlane/Fastfile index e69de29bb..cd799c902 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -0,0 +1,117 @@ +# This file contains the fastlane.tools configuration +# You can find the documentation at https://docs.fastlane.tools +# +# For a list of all available actions, check out +# +# https://docs.fastlane.tools/actions +# +# For a list of all available plugins, check out +# +# https://docs.fastlane.tools/plugins/available-plugins +# + +# Uncomment the line if you want fastlane to automatically update itself +# update_fastlane + + +platform :android do + desc "Fetches the latest version code from the Play Console and increments it by 1" + lane :fetch_and_increment_build_number do + app_identifier = CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier) + + internal_version_codes = google_play_track_version_codes( + package_name: app_identifier, + track: "internal", + json_key_data: ENV["ANDROID_PUBLISHER_CREDENTIALS"] + ) + + production_version_codes = google_play_track_version_codes( + package_name: app_identifier, + json_key_data: ENV["ANDROID_PUBLISHER_CREDENTIALS"] + ) + + max = internal_version_codes[0] > production_version_codes[0] ? internal_version_codes[0] : production_version_codes[0] + updated_version_code = max + 1 + + increment_version_code( + gradle_file_path: "./apps/wallet/instance/main/build.gradle.kts", + version_code: updated_version_code + ) + + sh("echo VERSION_CODE=#{updated_version_code} >> $GITHUB_ENV") + end + + desc "Start android baselineprofile" + lane :baseline do + gradle( + tasks: [":baselineprofile:main:generateBaselineProfile"] + ) + end + + desc "Build the android aab for release" + lane :build_release do + gradle( + task: ":apps:wallet:instance:main:bundle", + build_type: "Release", + properties: { + "android.injected.signing.store.file" => ENV["KEYSTORE_FILE"], + "android.injected.signing.store.password" => ENV["KEYSTORE_PASSWORD"], + "android.injected.signing.key.alias" => ENV["KEY_ALIAS"], + "android.injected.signing.key.password" => ENV["KEY_PASSWORD"], + } + ) + + puts "Debug" + puts Actions.lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH] + puts Actions.lane_context[SharedValues::GRADLE_ALL_AAB_OUTPUT_PATHS] + puts Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] + puts Actions.lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS] + + sh("echo AAB_OUTPUT_PATH=#{Actions.lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH]} >> $GITHUB_ENV") + end + + desc "Build the android apk" + lane :assemble_release do + gradle( + task: ":apps:wallet:instance:main:assemble", + build_type: "Release", + properties: { + "android.injected.signing.store.file" => ENV["KEYSTORE_FILE"], + "android.injected.signing.store.password" => ENV["KEYSTORE_PASSWORD"], + "android.injected.signing.key.alias" => ENV["KEY_ALIAS"], + "android.injected.signing.key.password" => ENV["KEY_PASSWORD"], + } + ) + + puts "Debug" + puts Actions.lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH] + puts Actions.lane_context[SharedValues::GRADLE_ALL_AAB_OUTPUT_PATHS] + puts Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] + puts Actions.lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS] + + sh("echo APK_OUTPUT_PATH=#{Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]} >> $GITHUB_ENV") + end + + desc "Upload to GooglePlay" + lane :upload_release do + aab_path = lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH] + app_identifier = CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier) + + upload_to_play_store( + track: "internal", + json_key_data: ENV["ANDROID_PUBLISHER_CREDENTIALS"], + aab: aab_path, + package_name: app_identifier, + ) + end + + desc "Build and upload to GooglePlay" + lane :beta do + fetch_and_increment_build_number + build_release + upload_release + + assemble_release + end +end + From 079c376c2cc90969300b43402282f8204e78f9f9 Mon Sep 17 00:00:00 2001 From: polstianka Date: Sat, 27 Jul 2024 07:21:34 -0700 Subject: [PATCH 3/3] rename action task --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 7675fd91d..874ae668b 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -1,4 +1,4 @@ -name: Android Mobile CD +name: Android APK build CD on: # Allows you to run this workflow manually from the Actions a tab