@@ -865,6 +865,16 @@ void main() {
865865/BUNDLE-METADATA/com.android.tools.build.debugsymbols/
866866/BUNDLE-METADATA/com.android.tools.build.debugsymbols/arm64-v8a/
867867/BUNDLE-METADATA/com.android.tools.build.debugsymbols/arm64-v8a/libflutter.so.sym
868+ ''' ;
869+
870+ // Output from `<android_sdk_root>/tools/bin/apkanalyzer files list <aab>`
871+ // on an aab containing the debug info and symbol tables.
872+ const String apkanalyzerOutputWithDebugInfoAndSymFiles =
873+ apkanalyzerOutputWithoutSymFiles +
874+ r'''
875+ /BUNDLE-METADATA/com.android.tools.build.debugsymbols/
876+ /BUNDLE-METADATA/com.android.tools.build.debugsymbols/arm64-v8a/
877+ /BUNDLE-METADATA/com.android.tools.build.debugsymbols/arm64-v8a/libflutter.so.dbg
868878''' ;
869879
870880 void createSharedGradleFiles () {
@@ -956,6 +966,71 @@ void main() {
956966 overrides: < Type , Generator > {AndroidStudio : () => FakeAndroidStudio ()},
957967 );
958968
969+ testUsingContext (
970+ 'build succeeds when debug info and symbol tables present for at least one architecture' ,
971+ () async {
972+ final AndroidGradleBuilder builder = AndroidGradleBuilder (
973+ java: FakeJava (),
974+ logger: logger,
975+ processManager: processManager,
976+ fileSystem: fileSystem,
977+ artifacts: Artifacts .test (),
978+ analytics: fakeAnalytics,
979+ gradleUtils: FakeGradleUtils (),
980+ platform: FakePlatform (environment: < String , String > {'HOME' : '/home' }),
981+ androidStudio: FakeAndroidStudio (),
982+ );
983+ processManager.addCommand (
984+ FakeCommand (command: List <String >.of (commonCommandPortion)..add ('bundleRelease' )),
985+ );
986+
987+ createSharedGradleFiles ();
988+ final File aabFile = createAabFile (BuildMode .release);
989+ final AndroidSdk sdk = AndroidSdk .locateAndroidSdk ()! ;
990+
991+ processManager.addCommand (
992+ FakeCommand (
993+ command: < String > [
994+ sdk.getCmdlineToolsPath (apkAnalyzerBinaryName)! ,
995+ 'files' ,
996+ 'list' ,
997+ aabFile.path,
998+ ],
999+ stdout: apkanalyzerOutputWithDebugInfoAndSymFiles,
1000+ ),
1001+ );
1002+
1003+ final FlutterProject project = FlutterProject .fromDirectoryTest (
1004+ fileSystem.currentDirectory,
1005+ );
1006+ project.android.appManifestFile
1007+ ..createSync (recursive: true )
1008+ ..writeAsStringSync (minimalV2EmbeddingManifest);
1009+
1010+ await builder.buildGradleApp (
1011+ project: project,
1012+ androidBuildInfo: const AndroidBuildInfo (
1013+ BuildInfo (
1014+ BuildMode .release,
1015+ null ,
1016+ treeShakeIcons: false ,
1017+ packageConfigPath: '.dart_tool/package_config.json' ,
1018+ ),
1019+ targetArchs: < AndroidArch > [
1020+ AndroidArch .arm64_v8a,
1021+ AndroidArch .armeabi_v7a,
1022+ AndroidArch .x86_64,
1023+ ],
1024+ ),
1025+ target: 'lib/main.dart' ,
1026+ isBuildingBundle: true ,
1027+ configOnly: false ,
1028+ localGradleErrors: < GradleHandledError > [],
1029+ );
1030+ },
1031+ overrides: < Type , Generator > {AndroidStudio : () => FakeAndroidStudio ()},
1032+ );
1033+
9591034 testUsingContext (
9601035 'building a debug aab does not invoke apkanalyzer' ,
9611036 () async {
0 commit comments