parseReactNativeProject static method
Implementation
static PlatformConfig? parseReactNativeProject(String projectPath) {
try {
// iOS configuration (ios/<App>/Info.plist + .entitlements)
final infoPlist = ProjectDetector.findInfoPlist(
projectPath,
ProjectType.reactNative,
);
final entitlements = ProjectDetector.findEntitlements(
projectPath,
ProjectType.reactNative,
);
String? bundleIdentifier;
List<String> iosUrlSchemes = [];
List<String> associatedDomains = [];
if (infoPlist != null) {
final iosConfig = IosParser.parseInfoPlist(infoPlist);
bundleIdentifier = iosConfig?.bundleIdentifier;
iosUrlSchemes = iosConfig?.urlSchemes ?? [];
}
if (entitlements != null) {
associatedDomains = IosParser.parseEntitlements(entitlements);
}
// Android configuration (android/app/src/main/AndroidManifest.xml)
final androidManifest = ProjectDetector.findAndroidManifest(
projectPath,
ProjectType.reactNative,
);
String? androidPackageName;
List<String> androidUrlSchemes = [];
List<String> appLinkHosts = [];
if (androidManifest != null) {
final androidConfig = AndroidParser.parseAndroidManifest(
androidManifest,
);
androidPackageName = androidConfig?.packageName;
androidUrlSchemes = androidConfig?.urlSchemes ?? [];
appLinkHosts = androidConfig?.appLinkHosts ?? [];
}
final allUrlSchemes = <String>{
...iosUrlSchemes,
...androidUrlSchemes,
}.toList();
return PlatformConfig(
projectType: ProjectType.reactNative,
bundleIdentifier: bundleIdentifier,
packageName: androidPackageName,
urlSchemes: allUrlSchemes,
iosUrlSchemes: iosUrlSchemes,
androidUrlSchemes: androidUrlSchemes,
associatedDomains: associatedDomains,
appLinkHosts: appLinkHosts,
);
} catch (e) {
return null;
}
}