anyway/frontend/android/README.md
Remy Moll cbada7e4a4
Some checks failed
Build and deploy the backend to staging / Build and push image (pull_request) Successful in 1m41s
Build and release debug APK / Build APK (pull_request) Failing after 4m46s
Build and deploy the backend to staging / Deploy to staging (pull_request) Successful in 16s
move secrets to hashicorp, don't use match (wip)
2024-12-14 16:39:27 +01:00

66 lines
2.1 KiB
Markdown

## Android Setup
### Keystore setup
```bash
keytool -genkey -v -keystore release.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias upload
```
- This is required to store local credentials securely and more importantly to sign the app for google play store distribution.
### Using secret credentials during build
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}" />
```
### Signing the app
Compared to the flutter template application, a few changes have to be made:
- Added to `android/app/build.gradle`:
```gradle
signingConfigs {
release {
keyAlias = secretProperties['keyAlias']
keyPassword = secretProperties['keyPassword']
storeFile = secretProperties['storeFile'] ? file(secretProperties['storeFile']) : null
storePassword = secretProperties['storePassword']
}
}
```
- Changed the `buildTypes` to use the `release` signing config:
```gradle
buildTypes {
release {
signingConfig signingConfigs.release
}
}
```
This makes use of the `secretProperties` defined previously:
```gradle
secretPropertiesFile.withReader('UTF-8') { reader ->
secretProperties.load(reader)
}
```