Buy

Flutter Android Setup

1.Introduction

In this article, we are going to set up the Restart App’s initial setup for real-time use cases.

2.Setup Instructions

  • Flutter SDK version for this project is 'Channel stable, 3.24.5'
  • Dart SDK version for this project is '3.5.4'
  • Gradle version for this project is 'gradle-8.5-all.zip'
  • Kotlin version for this project is '1.9.10'
  • Open your project File the Visual Studio Code which is used to create the project and also it is very powerful.
  • and in terminal run command 'flutter pub get'
  • project structure is given in image below


Major Things to do:

3.Change Base Url


  1. Change the BASE_URL Variable Presented in the Constants File.
    • It just updates your server’s primary URL to access all types of API Services From the App to your Server.
    • like this
      • Note : File Location : project/lib/common/app_constants.dart
    • 
      	static const String baseUrl = 'your base url here';
      	


  2. Change App Color.
  3. just update the below parameter to change the app color

    Note : File Location : project/lib/common/app_colors.dart

    • Color primary = const Color(0xffFCB13D);
    • Color secondary = const Color(0xffFCB13D);

4.Change Website Url

  1. change website url in given files,
  • Note : File Location project/lib/common/app_constants.dart
   
  static const String termsCondition = 'your terms and condition url';

  • Note : File Location project/lib/common/app_constants.dart

static const String privacyPolicy = 'your privacy policy url';   		


5.Google Map & Cloud Configure


  1. Create & configure account for map using Google map & Cloud by following below documents.

  2. After created & enabled the billing from google cloud & map console
    • add map api key change the map keys in given locations
  • Note : File Location "project/android/app/src/main/AndroidManifest.xml"
  • 
    <meta-data android:name="com.google.android.geo.API_KEY"
    android:value="your maps api key here"/>			
    

  • Note : File Location "project/lib/common/app_constant.dart"
  • 
     static String mapKey = Platform.isAndroid ? 'android map key' : 'ios map key';		
    

  • add android map key with restriction for android package and add ios map key with restriction for ios bundle id
  • after setup the firebase download googleservices.json file as shown in image.
  • add google-services.json in project/android/app/
  • after open the google-services.json file, and find out the "api_key","mobilesdk_app_id","project_id","project_number"
  • replace these key values in "project/lib/common/app_constant.dart" file
  • (project_number as firebasemessagingSenderId, mobilesdk_app_id as firebaseAppId)
  • We need to create nodes in firebase realtime database, please find the sample json database below or refer firebase setup.
  • Sample-json
  • call_FB_OTP node is used to configure whether the firebase otp should used or dummy otp should use for our testing purpose
  • Please make sure you have created the nodes mentioned below
    • call_FB_OTP
  • Update the rules part with below content
  • 
    {
    "rules": {
    "drivers": {
    ".read": true,
    ".write":true,
    	".indexOn":["is_active","g","service_location_id","vehicle_type","l","ownerid"],
    },
    "requests": {
    ".read": true,
    ".write": true,
    	".indexOn":["service_location_id"],
    },
    	"SOS": {
    ".read": true,
    ".write": true
    },
    	"call_FB_OTP": {
    ".read": true,
    ".write": true
    },
    "driver_android_version": {
    ".read": true,
    ".write": true
    },
    "driver_ios_version": {
    ".read": true,
    ".write": true
    },
    "user_android_version": {
    ".read": true,
    ".write": true
    },
    "user_ios_version": {
    ".read": true,
    ".write": true
    },
    "user_package_name": {
    ".read": true,
    ".write": true
    },
    "user_bundle_id": {
    ".read": true,
    ".write": true
    },
    "driver_package_name": {
    ".read": true,
    ".write": true
    },
    "driver_bundle_id": {
    ".read": true,
    ".write": true
    },
    "request-meta": {
    ".read": true,
    ".write": true,
    	".indexOn":["driver_id","user_id"]
    },
    "bid-meta": {
    ".read": true,
    ".write": true,
    	".indexOn":["driver_id","user_id","g"]
    },
    "owners": {
    ".read": true,
    ".write": true,
    	".indexOn":["driver_id","user_id"]
    },
    "chats": {
    ".read": true,
    ".write": true
    },
    }
    }	
    


6.Change Package Name


Manually Change Package Name


  1. Download & Paste the google-services.json into the 'project/android/app' folder properly to make proper communication from your App which is a client to FireBase.
  2. copy the package name from firebase and paste it in the following files
  • Note : File Location "project/android/app/build.gradle"
  • 
    applicationId "package name here"
    
    namespace "package name here"
    		
    

  • Note : File Location "project/android/app/src/main/kotlin/../../../MainActivity.kt"
    • add package name here
    
    package com.project.name
    		
    

    1. change folder name
    2. if your package name is com.package.android then,

    
    project/android/app/src/main/kotlin/com/something/something/ to project/android/app/src/main/kotlin/com/package/android
    	
    

Change Package Name with comment



dart run change_app_package_name:main com.new.package.name		

7.Change Icons


  1. replace icons images in following folders in given name
    • project/assets/images/ - logo.png
    • project/assets/images/ - icon.png
    • project/assets/images/ - loader_image.png
    • project/android/app/src/main/res/mipmap-hdpi - ic_launcher.png (72x72)
    • project/android/app/src/main/res/mipmap-mdpi - ic_launcher.png (48x48)
    • project/android/app/src/main/res/mipmap-xhdpi - ic_launcher.png (96x96)
    • project/android/app/src/main/res/mipmap-xxhdpi - ic_launcher.png (144x144)
    • project/android/app/src/main/res/mipmap-xxxhdpi - ic_launcher.png (192x192)
    • project/android/app/src/main/res/drawable/ - logo.png

8.Change Display Names


  1. change app display name in file,
  • Note : File Location "project/android/app/src/main/AndroidManifest.xml"
  • 
    android:label="product name"
    
    project/lib/common/app_constants.dart
    
    static const String title = 'product name';
    

    9.Change App Version


    1. change app version

    Note : File Location "project/pubsec.yaml"

    
    version: 1.0.2+3
    

    10.Create release keys


    1. create release keys by running command in terminal

    note: change anyname with any specific name you like,

    keytool -genkey -v -keystore ./(jks file name).jks -keyalg RSA -keysize 2048 -validity 10000 -alias (alias name) -storetype JKS

    • after running this command give the data asked in the terminal. after that it will save the jks file and display the location

    11.Replace the jks key


    1. replace the jks key details in file,

    Note : File Location "project/android/key.properties as given below"

    
    storePassword=password you entered while creating jks file
    
    keyPassword=password you entered while creating jks file
    
    keyAlias=alias name you given in the command for creating jks file
    
    storeFile=jks file name with the location like ../../../jks
    

    12.Generate SHA-1


    1. Generate SHA-1 and SHA-256 keys from the project
      • you will be able to get these keys in two ways these are in terminal go to folder 'project/android/' and run the command './gradlew signinReport' then you will get debug and release SHA-1 and SHA-256 Run the below command in the terminal to get SHA keys Key tool -genkey -v -keystore release.keystore -alias -keyalg RSA -keysize 2048 -validity 10000

    Finally copy that debug and release keys and paste those in Firebase where

    Click Settings icon (presented right on project overview ) -> project settings -> Your App section -> SHA certificate

    fingerprints click add button and paste & Submit.

    13.Google Map Services Setup


    1. Google Map Services Setup
    • Enable below services in cloud console
      • Places API - which helps to get address while typing keys from the app
      • Maps SDK For Android
      • Google Sheets API - For translation sheets
      • Android Device Verification - For Identify the App name to append in OTP from Firebase
      • Geolocation APIs like distance matrix, geocoding, geolocations, Maps JavaScript, Maps static.

    14.Generate APK


    1. we have the flavour configuration in project, so we can use like this to build release application
    2. to download apk file run "flutter build apk --release -t lib/env/main_dev.dart " in terminal from project location, and you will get apk file in folder - project/build/app/outputs/apk/release/app-release.apk

    15.Generate bundle file


    1. to download app bundle file run "flutter build appbundle --release -t lib/env/main_dev.dart " in terminal from project location, and you will get app bundle file in folder - project/build/app/outputs/bundle/release/app-release.aab

    16.Final Steps


    1. after uploading app in playstore, then you will get a sha1 key and sha256 key from playstore, add those keys in your firebase project as

    Click Settings icon (presented right on project overview ) -> project settings -> Your App section -> SHA certificate

    fingerprints click add button and paste & Submit.