Skip to content

Commit cf0d068

Browse files
add: fallback to local.properties
1 parent fbbdadc commit cf0d068

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-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

+7-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 =

0 commit comments

Comments
 (0)