概要
Flutter側から、Androidのビルド日時を取得するためのコーディング方法を整理した。
背景と目的
Flutterアプリを作成する際、ビルド日時をアプリ画面で表示したかった。そのため、方法について調べ、整理しておく。
詳細
0. 環境
- Flutter
- Android
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のビルド日時を取得する方法が分かった。アプリ作成に活用する。