https://github.com/rensawamo/flutter_android_destribution
flutter cicd for andoroid
https://github.com/rensawamo/flutter_android_destribution
Last synced: 4 months ago
JSON representation
flutter cicd for andoroid
- Host: GitHub
- URL: https://github.com/rensawamo/flutter_android_destribution
- Owner: rensawamo
- Created: 2024-02-16T01:50:53.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-02-20T06:26:55.000Z (over 1 year ago)
- Last Synced: 2025-01-08T14:42:43.856Z (5 months ago)
- Language: Dart
- Homepage:
- Size: 124 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# android destribution(2024/2)
### fvm 設定で行う場合の追加
``` sh
fvm list
fvm use (上記ver)
or
fvm use stable
```### gitigonre の更新
以下で firebaseの設定やAPIのファイルをgitで公開しないようにする
```sh
**/ios/Runner/GoogleService-Info.plist
**/android/app/google-services.json
*.jks
*.pem
**/.fvm/flutter_sdk
**/lib/firebase_options.dart
```### 使用する エンコードコマンド
```sh
$ base64 -i input.xxx -o output.pem
```### 必要な環境変数
GOOGLE_SERVICES_JSON_BASE64 : firebaseのセットアップでダウンロードした google-services.json のエンコード- KEYSTORE_BASE64 : release.jks(下で説明) のエンコード
- FIREBASE_OPTION_BASE64 : lib/の firebase_options.dart のエンコード
- KEY_ALIAS, KEY_PASSWORD , STORE_PASSWORD : release.jksのパスワードやエイリアス名
- ANDROID_APP_ID : firebase のandoroid アプリ名
- CREDENTIAL_FILE_CONTENT : GCP トークン
## アップロードkeyの準備
### プロジェクトファイルの andoroi/app で以下のコマンドを実行し証明書を作成する
alias_nameは覚えやすい名前にする```sh
keytool -genkey -v -keystore release.jks -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
```### github actionの環境変数で使うためエンコードしておく
```sh
openssl base64 -in release.jks -out release.pem
```### android/keystore.propertiesを作成(local用)
```sh
storePassword=パスワード
keyPassword=パスワード
keyAlias=alias_name
storeFile=release.jks
```### android/app/build.gradeの編集
```sh
// android 設定の上
def keystorePropertiesFile = rootProject.file("keystore.properties")
android {
....
// defalutConfigの下
signingConfigs {
release {
if (System.getenv("GITHUB_ACTIONS")) { // gitaction用
storeFile file("release.jks")
storePassword System.getenv()["STORE_PASSWORD"]
keyAlias System.getenv()["KEY_ALIAS"]
keyPassword System.getenv()["KEY_PASSWORD"]
} else if (keystorePropertiesFile.exists()) { // local用
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
}....
// この中に releaseの追加
buildTypes {
release {
signingConfig signingConfigs.release```
### 以下コマンドを実行(local apkファイルの出力の確認)
```sh
flutter build apk
```## firebase 導入
### 上記で作成した 証明書の フィンガプリントを取得
以下のコマンドを実行し SHA1を取得。
```sh
keytool -v -list -keystore release.jks
```
firebase のプロジェクト → andoroid app を追加のページの
デバッグ用の署名証明書 SHA-1に上記を張り付け、google-services.jsonをダウンロード

android/build.grade に以下の設定を追加する
```sh
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.android.tools.build:gradle:7.3.0'
}
```android/app/build.gradeの設定を変更
```sh
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
id 'com.google.gms.google-services'
}
....dependencies {
implementation platform('com.google.firebase:firebase-bom:32.7.2')
implementation 'com.google.firebase:firebase-analytics'
}
```上記の後、firebaseの画面に移動 → アプリの追加 → flutter で
firebase login コマンドなどを順番に実行し、プロジェクトに firebase_option.dartが追加されていることを確認する
### firebase core の導入
[pubget](https://pub.dev/)
から firebase_core のバージョンを指定して```sh
flutter pub get
```### firebase distribution との接続トークンの発行
https://github.com/wzieba/Firebase-Distribution-Github-Action/wiki/FIREBASE_TOKEN-migration#guide-2---the-same-but-with-screenshots
以下のコマンドは、現在では非推奨。
```sh
firebase login:ci
```