工作と競馬2

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

Flutter側で、Androidのビルド日時を取得する

概要

Flutter側から、Androidのビルド日時を取得するためのコーディング方法を整理した。




背景と目的

Flutterアプリを作成する際、ビルド日時をアプリ画面で表示したかった。そのため、方法について調べ、整理しておく。



詳細

0. 環境


1. Android

以下の2つのファイルに必要な設定、コーディングを行う必要がある。

build.gradle

android/app/build.gradleに、外部から参照できるように設定を追記。

andriod {
    中略
    :
    defaultConfig {
        :
       中略

        // ビルド日時を Context#getString で参照できるようにする
        resValue("string", "build_date", System.currentTimeMillis().toString())
    }

kotlin側ソースコード

MainActivity.kt を以下のように変更。

import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import java.text.SimpleDateFormat
import java.util.Locale
import kotlinx.coroutines.ExperimentalCoroutinesApi

// class MainActivity: FlutterActivity()

class MainActivity: FlutterActivity() {
    @OptIn(ExperimentalCoroutinesApi::class)
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "Channel").setMethodCallHandler { call, result -> 
            
            // ビルド日時
            val buildDate = getString(R.string.build_date).toLong()
            // 日付をフォーマットする
            val simpleDateFormat = SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.getDefault())
            val formatDate = simpleDateFormat.format(buildDate)

            when (call.method) {
                "getBuildDate" ->
                    result.success(formatDate)
                else ->
                    result.success(null)
            }
        }
    }
}

2. Flutter側ソースコード

Flutter側で取得するサンプルは以下。MethodChannelという手段を用いて、MainActivityで定義したメソッドを呼び出す。

Future<String> _getBuildDate() async {
  const MethodChannel channel = MethodChannel("Channel");
  String? resultText = await channel.invokeMethod("getBuildDate");
  return resultText ?? "null";
}

void main() async{

  String? buildDate = await _getBuildDate();
  print("build date=${buildDate ?? 'null'}");

  runApp(const MyApp());
}


参考

takusan.negitoro.dev rightcode.co.jp



まとめと今後の課題

Flutter側から、Androidのビルド日時を取得する方法が分かった。アプリ作成に活用する。