| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:file/file.dart'; |
| import 'package:flutter_tools/src/base/io.dart'; |
| |
| import '../src/common.dart'; |
| import 'test_utils.dart'; |
| |
| void main() { |
| late Directory tempDir; |
| |
| setUp(() async { |
| tempDir = createResolvedTempDirectorySync('run_test.'); |
| }); |
| |
| tearDown(() async { |
| tryToDelete(tempDir); |
| }); |
| |
| testWithoutContext('build succeeds with api 33 features', () async { |
| final String flutterBin = fileSystem.path.join(getFlutterRoot(), 'bin', 'flutter'); |
| ProcessResult result = await processManager.run(<String>[ |
| flutterBin, |
| 'create', |
| tempDir.path, |
| '--project-name=testapp', |
| ], workingDirectory: tempDir.path); |
| expect(result.exitCode, 0); |
| |
| final File api33File = tempDir |
| .childDirectory('android') |
| .childDirectory('app') |
| .childDirectory('src') |
| .childDirectory('main') |
| .childDirectory('java') |
| .childFile('Android33Api.java'); |
| |
| api33File.createSync(recursive: true); |
| // AccessibilityManager.isAudioDescriptionRequested() is an API 33 feature |
| api33File.writeAsStringSync(''' |
| import android.app.Activity; |
| import android.view.accessibility.AccessibilityManager; |
| import androidx.annotation.Keep; |
| import io.flutter.Log; |
| |
| @Keep |
| public final class Android33Api extends Activity { |
| private AccessibilityManager accessibilityManager; |
| |
| public Android33Api() { |
| accessibilityManager = getSystemService(AccessibilityManager.class); |
| } |
| |
| public void doSomething() { |
| if (accessibilityManager.isAudioDescriptionRequested()) { |
| Log.e("flutter", "User has requested to enable audio descriptions"); |
| } |
| } |
| } |
| |
| '''); |
| |
| result = await processManager.run(<String>[ |
| flutterBin, |
| ...getLocalEngineArguments(), |
| 'build', |
| 'apk', |
| ], workingDirectory: tempDir.path); |
| expect(result.exitCode, 0); |
| expect(result.stdout.toString(), contains('app-release.apk')); |
| }); |
| } |