@@ -865,6 +865,16 @@ void main() {
865
865
/BUNDLE-METADATA/com.android.tools.build.debugsymbols/
866
866
/BUNDLE-METADATA/com.android.tools.build.debugsymbols/arm64-v8a/
867
867
/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
868
878
''' ;
869
879
870
880
void createSharedGradleFiles () {
@@ -956,6 +966,71 @@ void main() {
956
966
overrides: < Type , Generator > {AndroidStudio : () => FakeAndroidStudio ()},
957
967
);
958
968
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
+
959
1034
testUsingContext (
960
1035
'building a debug aab does not invoke apkanalyzer' ,
961
1036
() async {
0 commit comments