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
Initialize fastlane
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
# 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
Configuring FastFile
This file is where we’ll have our fastlane action flow
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
How to configure on ios?
access your project and enter the android folder
Initialize fastlane
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
app_identifier(“your app_identifier”)
# enter your apple_id
apple_id(“your apple_id”)
Configuring FastFile
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