如何在Flutter App上获取编译/构建日期?

hc8w905p  于 2023-05-29  发布在  Flutter
关注(0)|答案(4)|浏览(284)

我知道如何使用package_info获取版本,但如何在iOS和Android上获取运行时的构建时间戳?

rt4zxlrg

rt4zxlrg1#

您可以使用构建shell脚本在lib/...中创建/更新Dart文件,并使用常量保存运行flutter build ...之前的日期。
然后在代码中导入该文件并使用它。

0qx6xfy6

0qx6xfy62#

我建议您也考虑基本上滚动您自己版本的package_info库,其中包括您希望从平台代码中获得的所有信息。我使用Gradle构建文件来更新每个构建的一些变量,然后从Flutter中检索这些变量。
检查package_info代码可以发现它实际上是一个相当简单的MethodChannel用例。你可以添加任何你可以从本地端得到的东西。

zzwlnbp8

zzwlnbp83#

展开Günter Zöchbauer的回答...
1.在源文件夹中创建一个文本文件并输入以下内容

!/bin/sh

var =“final DateTime buildDate = DateTime.fromMillisecondsSinceEpoch(($(date“+%s000”)));”
echo“$var”> lib/build_date.dart
1.将文本文件另存为
build_date_script.sh
1.在Android Studio中,打开Edit Configurations -> Add New Configuration并添加一个新的'Shell Script'
1.给予它一个名字,比如'Writebuildate'
1.选择“脚本文件”并输入我们在第2阶段创建的“build_date_script.sh”的位置。
1.下载并安装GitBash https://gitforwindows.org/
1.返回Android Studio,将解释器路径更改为“C:\Program Files\Git\git-bash.exe”。
1.取消选中“在终端中执行”并单击“应用”
1.然后在你的主flutter运行配置中,添加一个'Before launch'项,选择'Run another configuration'并选择我们在阶段4中命名的脚本配置。
1.单击“确定”。
现在,每次构建时,它都会在lib文件夹中创建一个名为'build_date.dart'的新dart文件,其中包含一个名为'buildDate'的变量,用于在应用程序中使用构建日期。

uqcuzwp8

uqcuzwp84#

我正在使用Dart团队的build package添加我的解决方案。
1.在pubspec.yaml中添加依赖项:

dev_dependencies: 
  build_runner: ^2.3.3
  build: ^2.4.0

1.将这个类添加到你的项目中的任何目录(我把我的放在/lib/common/build/文件夹中,你可以把它放在你的目录中,不要忘记在代码中更改目录):

import 'dart:io';

// ignore: depend_on_referenced_packages
import 'package:build/build.dart';

Builder appBuildTimestampGenerator(BuilderOptions options) => AppBuildTimestampGeneratorBuilder();

class AppBuildTimestampGeneratorBuilder implements Builder {
  @override
  final buildExtensions = {
    '.dart': ['.my_gen.dart']
  };

  @override
  Future<void> build(BuildStep _) async {
    final outputFile = File('lib/common/build/app_build_timestamp.g.dart');
    await outputFile.writeAsString('''
// Generated file on build.

/// Timestamp that records last build of the app. Can be shown in the app.
const int lastAppBuildTimestamp = ${DateTime.now().millisecondsSinceEpoch};
''');
  }
}

1.添加build.yaml并将以下内容放入其中(替换package_name并编辑目录):

builders:
  package_name|appBuildTimestampGenerator:
    import: 'package:package_name/common/build/app_build_timestamp_generator.dart'
    builder_factories: ['appBuildTimestampGenerator']
    build_extensions: {'.dart': ['.my_gen.dart']}
    auto_apply: root_package
    build_to: source

1.运行命令:dart run build_runner build --delete-conflicting-outputs
1.在您的目录中生成名为app_build_timestamp.g.dart的文件。
1.您可以在项目中使用lastAppBuildTimestamp
这对我很有效。使用Flutter 3.10.x和Dart 3.0.1

相关问题