checkDevSession function

Future<DevSessionCheck> checkDevSession({
  1. required String projectPath,
  2. String? targetFile,
  3. List<String> dartDefinePairs = const [],
  4. String? dartDefineFromFile,
  5. String requestedBuildMode = 'debug',
  6. RunManifestRepository manifestRepository = const FileRunManifestRepository(),
  7. FlutterSdkProbe sdkProbe = const HostFlutterSdkProbe(),
  8. Future<String?> discoverApk(
    1. String projectPath
    )?,
})

oka dev preflight (ADR-0011 H1): validate the newest built APK's session manifest against the requested session and resolve the flutter binary from the recorded SDK path (never ambient PATH).

Refusals (never warn-and-continue):

  • no APK / no manifest → rebuild instructions;
  • flag mismatch (target / defines / build mode / app id) → oka-branded error naming every differing field + the fix;
  • engine revision drift (SDK upgraded under the recorded path since the build) → rebuild instructions;
  • recorded SDK path no longer holds a flutter binary.

Implementation

Future<DevSessionCheck> checkDevSession({
  required String projectPath,
  String? targetFile,
  List<String> dartDefinePairs = const [],
  String? dartDefineFromFile,
  String requestedBuildMode = 'debug',
  RunManifestRepository manifestRepository =
      const FileRunManifestRepository(),
  FlutterSdkProbe sdkProbe = const HostFlutterSdkProbe(),
  Future<String?> Function(String projectPath)? discoverApk,
}) => DevSessionPreflight(
  manifestRepository: manifestRepository,
  sdkProbe: sdkProbe,
  discoverApk: discoverApk ?? findNewestBuiltApk,
).run(
  projectPath: projectPath,
  targetFile: targetFile,
  dartDefinePairs: dartDefinePairs,
  dartDefineFromFile: dartDefineFromFile,
  requestedBuildMode: requestedBuildMode,
);