/androidBuildTypes

React Native - Companion Repo to android build medium post

Primary LanguageRuby

Android + React Native + Fastlane: Working with multiple build types

This is the companion repository for my medium post.

Gradle Configurations

Global gradle.properties - defining node executable

# This file lives in ~/.gradle/gradle.properties

MYAPP_RELEASE_STORE_FILE=foo.keystore
MYAPP_RELEASE_KEY_ALIAS=foo-alias
MYAPP_RELEASE_STORE_PASSWORD=foo_store_release
MYAPP_RELEASE_KEY_PASSWORD=foo_key_release

org.gradle.daemon=true

NODE_PATH=[YOUR_HOME_PATH]/.nvm/versions/node/v[YOUR_NODE_VERSION]/bin/node

React ExtraPropertiesExtension

project.ext.react = [
    entryFile: "index.js",
    nodeExecutableAndArgs: hasProperty('NODE_PATH')?[NODE_PATH]:["node"],
    bundleInDebug: false,
    bundleInStaging: true,
    bundleInRelease: true,
    jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
    resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
    jsBundleDirStaging: "$buildDir/intermediates/assets/staging",
    resourcesDirStaging: "$buildDir/intermediates/res/merged/staging",
    jsBundleDirRelease: "$buildDir/intermediates/assets/release",
    resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
    devDisabledInDebug: false,
    devDisabledInStaging: true,
    devDisabledInRelease: true,
    inputExcludes: ["ios/**", "__tests__/**"]
];

new buildType, applicationIdSuffix, signingConfigs

buildTypes {
  ...
  staging {
      minifyEnabled enableProguardInReleaseBuilds
      proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
      signingConfig signingConfigs.release
      applicationIdSuffix ".staging"
  }

Fastlane Actions

Yarn install

yarn(
  command: "install",
  package_path: "./package.json"
)

Android versioning

ANDROID_VERSION_NAME = get_version_name(
  gradle_file_path:"android/app/build.gradle",
  ext_constant_name:"versionName"
)
ANDROID_VERSION_CODE = get_version_code(
  gradle_file_path:"android/app/build.gradle",
  ext_constant_name:"versionCode"
)

Adding badges

if options[:badge]
    add_badge(
      shield: "#{ANDROID_VERSION_NAME}-#{ANDROID_VERSION_CODE}-orange",
      glob: "/android/app/src/main/res/mipmap-*/ic_launcher.png",
      alpha: true,
      shield_scale: "0.75"
    )
  end

Upload to Crashlytics

if ENV["CRASHLYTICS_API_KEY"] && ENV["CRASHLYTICS_BUILD_SECRET"]
  crashlytics(
    api_token: ENV["CRASHLYTICS_API_KEY"],
    build_secret: ENV["CRASHLYTICS_BUILD_SECRET"],
    groups: ["your-test-groups-here"],
    notes: "#{ANDROID_VERSION_NAME}-#{ANDROID_VERSION_CODE} beta release - fastlane generated",
    notifications: true
  )
end

Upload to Play Store

if options[:play_store]
  # upload to alpha track on google play developer's console
  supply(track: "alpha", apk: "android/app/build/outputs/apk/app-release.apk")
end