## Android Setup

### Keystore setup
```bash
keytool -genkey -v -keystore release.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias release
```
- This is required to store local credentials securely (not used for now).
- But necesseary in order to restrict the particular api key to a particular app (through the sha1 of the associated keystore).


### Building and secret credentials
Following the guide under [https://developers.google.com/maps/flutter-package/config#android_1](https://developers.google.com/maps/flutter-package/config#android_1).
- Add the following to `android/build.gradle`:
    ```gradle
    buildscript {
        dependencies {
            classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
        }
    }
    ```
- Add the following to `android/app/build.gradle`:
    ```gradle
    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }
    ```
- Add the credentials to `android/secrets.properties`:
    ```properties
    MAPS_API_KEY=YOUR_API_KEY
    ```
- Reference the credentials in `android/app/src/main/AndroidManifest.xml`:
    ```xml
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}" />
    ```


### Using the credentials in CI
- Add the base64 encoded credentials to the repository secrets (e.g. `ANDROID_SECRETS`).
    ```bash
    base64 -i android/secrets.properties
    ```
- Use the following in the CI script:
    ```bash
    echo {{ secrets.ANDROID_SECRETS }} | base64 -d > android/secrets.properties
    ```