Improve the Build Process of your Apps

Improve the Build Process of your Apps

First of all, let’s understand what this tool is:

What is Fastlane?

It’s an open-source tool that will help you improve the development process and the distribution of your android and ios applications. With this tool you can automate processes such as:

Automatically generate screenshots for use in stores
Distribute beta versions to testers
Sign your own code
Upload a new version to testflight

It is possible to use external plugins to implement new flows; these plugins are developed by the open-source community.

Read more in the documentation

How to configure on android?

access your project and enter the android folder

cd myApp/android

Initialize fastlane

Fastlane init

Now! you have to do configurations:

In the terminal you will be asked to enter the package name found in the path NameOfApp/android/app/build.gradle and in the namespace field.
As we are working with android at the moment, we need to make some settings in google. We’ll have to generate the json file with some settings.

Google Configuration

Open the google console

Activate the api of the project you are working on, if you don’t have a project created, create it here.
Open the google service accounts and select the project you are working on.

Create google services

Fill in the details and click done
Copy the email address provided by the service and save it as we will need it later

Create the keys, click on the 3 dots under actions
Manage keys

Create new key -> JSON -> Create
We will place this json inside our project, place this file inside the android/fastlane folder and define a name for it
We need to give permission for our service to work

User permissions

Open the google console and go to users and permissions
Invite user -> enter the email address of the service
Set permissions to admin

Configuring the AppFile

json_key_file(“android/fastlane/keys.json”) # Path to the json secret

# find this data inside android/build.gradle, we use this to identify the app we are working on
package_name(“com.nameofapp”)

Installing an automatic version change plugin

access the path yourProject/android/fastlane
run this command

gem ‘fastlane-plugin-increment_version_code’

Configuring FastFile

This file is where we’ll have our fastlane action flow

fastlane_require ‘dotenv’

default_platform(:android)

# esta linha faz a leitura do arquivo gradle.properties para
# pegar algumas informações de config
def getGradleProperty(property_name)
gradle_properties_content = File.read(‘../gradle.properties’)
property_regex = /^#{property_name}=(.+)/
match = gradle_properties_content.match(property_regex)
match[1] if match
end

platform :android do
desc “Deploy to test internal to Google Play”

lane :deployBeta do
pathKeyJson = “android/fastlane/keys.json”

# aumentar versão do build
previous_build_number = google_play_track_version_codes(
package_name: “com.nameofapp”,
json_key: pathKeyJson,
track: “internal”,
)[0]

current_build_number = previous_build_number + 1

increment_version_code(
gradle_file_path: “./app/build.gradle”,
version_code: current_build_number
)

gradle(task: ‘clean’)
gradle(
task: ‘bundleRelease’,
properties: {
“storeFile” => “../app/release.keystore”,
“android.injected.signing.store.password” => getGradleProperty(‘MYAPP_UPLOAD_STORE_PASSWORD’),
“android.injected.signing.key.alias” => getGradleProperty(‘MYAPP_UPLOAD_KEY_ALIAS’),
“android.injected.signing.key.password” => getGradleProperty(‘MYAPP_UPLOAD_KEY_PASSWORD’),
}
)

supply(
json_key: pathKeyJson,
package_name: “com.nameofapp”,
track: ‘internal’,
skip_upload_metadata: true,
skip_upload_images: true,
skip_upload_screenshots: true,
skip_upload_apk: true,
skip_upload_aab: false
)
end
end

Create script package.json

“fastlane:android”: “cd android/Fastlane && Fastlane deployBeta”

How to configure on ios?

access your project and enter the android folder

cd myApp/android

Initialize fastlane

Fastlane init

Tools we will use:

app_store_connect_api_key: Tool that allows authentication with App Store Connect, this improves security and simplifies the implementation process.

build_app: Used to generate an ipa file of our application.

upload_to_testflight: Upload the ipa file to testflight

Generate api key

Select user and access, select tab api keys

Generate api key

Choose a name

Select the type of access -> generate the key

Paste the key file into the path myApp/ios/fastlane

Configuring AppFile

# enter your app identifier
app_identifier(“your app_identifier”)

# enter your apple_id
apple_id(“your apple_id”)

Configuring FastFile

default_platform(:ios)

platform :ios do
desc “Deploy App to Testflight”
lane :upload_testflight_beta do
build_app(
workspace: “myApp.xcworkspace”,
scheme: “myApp”,
silent: true,
clean: true,
)

api_key = app_store_connect_api_key(
key_id: “your key id”,
issuer_id: “your issuer id”,
key_filepath: “path to file auth key”,
duration: 1200,
in_house: false
)

upload_to_testflight(
api_key: api_key,
skip_submission: true,
ipa: “myApp.ipa”,
skip_waiting_for_build_processing: true,
)
end
end

Create script package.json

“fastlane:ios”: “cd iod/Fastlane && Fastlane upload_testflight_beta”
Please follow and like us:
Pin Share