Skip to content

Commit cae647e

Browse files
Merge pull request fluttercommunity#322 from RatakondalaArun/fix/flutter-v2.8.0-support-321
Fix/flutter v2.8.0 support 321
2 parents fbbdadc + 6915e2f commit cae647e

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

lib/android.dart

+18-4
Original file line numberDiff line numberDiff line change
@@ -298,15 +298,29 @@ List<String> transformAndroidManifestWithNewLauncherIcon(
298298
}).toList();
299299
}
300300

301-
/// Retrieves the minSdk value from the Android build.gradle file
301+
/// Retrieves the minSdk value from the Android build.gradle file or local.properties file
302302
int minSdk() {
303-
final File androidGradleFile = File(constants.androidGradleFile);
304-
final List<String> lines = androidGradleFile.readAsLinesSync();
303+
final androidGradleFile = File(constants.androidGradleFile);
304+
final androidLocalPropertiesFile = File(constants.androidLocalPropertiesFile);
305+
306+
// look in build.gradle first
307+
final minSdkValue = getMinSdkFromFile(androidGradleFile);
308+
309+
// look in local.properties. Didn't find minSdk, assume the worst
310+
return minSdkValue != 0
311+
? minSdkValue
312+
: getMinSdkFromFile(androidLocalPropertiesFile);
313+
}
314+
315+
/// Retrieves the minSdk value from [File]
316+
int getMinSdkFromFile(File file) {
317+
final List<String> lines = file.readAsLinesSync();
305318
for (String line in lines) {
306319
if (line.contains('minSdkVersion')) {
307320
// remove anything from the line that is not a digit
308321
final String minSdk = line.replaceAll(RegExp(r'[^\d]'), '');
309-
return int.parse(minSdk);
322+
// when minSdkVersion value not found
323+
return int.tryParse(minSdk) ?? 0;
310324
}
311325
}
312326
return 0; // Didn't find minSdk, assume the worst

lib/constants.dart

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
String androidResFolder(String? flavor) => "android/app/src/${flavor ?? 'main'}/res/";
2-
String androidColorsFile(String? flavor) => "android/app/src/${flavor ?? 'main'}/res/values/colors.xml";
1+
String androidResFolder(String? flavor) =>
2+
"android/app/src/${flavor ?? 'main'}/res/";
3+
String androidColorsFile(String? flavor) =>
4+
"android/app/src/${flavor ?? 'main'}/res/values/colors.xml";
35
const String androidManifestFile = 'android/app/src/main/AndroidManifest.xml';
46
const String androidGradleFile = 'android/app/build.gradle';
7+
const String androidLocalPropertiesFile = 'android/local.properties';
58
const String androidFileName = 'ic_launcher.png';
69
const String androidAdaptiveForegroundFileName = 'ic_launcher_foreground.png';
710
const String androidAdaptiveBackgroundFileName = 'ic_launcher_background.png';
8-
String androidAdaptiveXmlFolder(String? flavor) => androidResFolder(flavor) + 'mipmap-anydpi-v26/';
11+
String androidAdaptiveXmlFolder(String? flavor) =>
12+
androidResFolder(flavor) + 'mipmap-anydpi-v26/';
913
const String androidDefaultIconName = 'ic_launcher';
1014

1115
const String iosDefaultIconFolder =
@@ -21,6 +25,9 @@ const String errorMissingPlatform =
2125
const String errorMissingRegularAndroid =
2226
'Adaptive icon config found but no regular Android config. '
2327
'Below API 26 the regular Android config is required';
28+
const String errorMissingMinSdk =
29+
'Cannot not find minSdk from android/app/build.gradle or android/local.properties'
30+
'Specify minSdk in either android/app/build.gradle or android/local.properties';
2431
const String errorIncorrectIconName =
2532
'The icon name must contain only lowercase a-z, 0-9, or underscore: '
2633
'E.g. "ic_my_new_icon"';

lib/main.dart

+3
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ Future<void> createIconsFromConfig(Map<String, dynamic> config,
9292

9393
if (isNeedingNewAndroidIcon(config) || hasAndroidAdaptiveConfig(config)) {
9494
final int minSdk = android_launcher_icons.minSdk();
95+
if (minSdk == 0) {
96+
throw const InvalidConfigException(errorMissingMinSdk);
97+
}
9598
if (minSdk < 26 &&
9699
hasAndroidAdaptiveConfig(config) &&
97100
!hasAndroidConfig(config)) {

0 commit comments

Comments
 (0)