read static method
Reads the iOS and Android config of the project at root.
Anything unreadable is left out rather than reported as empty, so a project without one platform doesn't look misconfigured.
Implementation
static PlatformLinks read(String root) {
final String? plist = _read('$root/ios/Runner/Info.plist');
final List<String> domains = [];
for (final String path in const [
'ios/Runner/Runner.entitlements',
'ios/Runner/RunnerDebug.entitlements',
]) {
final String? entitlements = _read('$root/$path');
if (entitlements == null) continue;
for (final String value in _plistStrings(entitlements)) {
if (value.startsWith('applinks:')) {
domains.add(value.substring('applinks:'.length));
}
}
}
final String? manifest = _read(
'$root/android/app/src/main/AndroidManifest.xml',
);
return PlatformLinks(
iosFound: plist != null,
iosSchemes: plist == null ? const [] : _urlSchemes(plist),
iosDomains: _unique(domains),
androidFound: manifest != null,
androidSchemes: manifest == null
? const []
: _attributes(manifest, 'scheme'),
androidHosts: manifest == null ? const [] : _attributes(manifest, 'host'),
);
}