Quellcode durchsuchen

[iOS] Use mdfind to check if Xcode is installed in one-click deploy code.

(cherry picked from commit 0e2f297806dc204f2b61dd3727d5ec360205cbdd)
bruvzg vor 1 Jahr
Ursprung
Commit
65677df124
1 geänderte Dateien mit 14 neuen und 8 gelöschten Zeilen
  1. 14 8
      platform/ios/export/export_plugin.cpp

+ 14 - 8
platform/ios/export/export_plugin.cpp

@@ -2074,15 +2074,21 @@ bool EditorExportPlatformIOS::is_package_name_valid(const String &p_package, Str
 bool EditorExportPlatformIOS::_check_xcode_install() {
 	static bool xcode_found = false;
 	if (!xcode_found) {
-		String xcode_path;
-		List<String> args;
-		args.push_back("-p");
-		int ec = 0;
-		Error err = OS::get_singleton()->execute("xcode-select", args, &xcode_path, &ec, true);
-		if (err != OK || ec != 0) {
-			return false;
+		Vector<String> mdfind_paths;
+		List<String> mdfind_args;
+		mdfind_args.push_back("kMDItemCFBundleIdentifier=com.apple.dt.Xcode");
+
+		String output;
+		Error err = OS::get_singleton()->execute("mdfind", mdfind_args, &output);
+		if (err == OK) {
+			mdfind_paths = output.split("\n");
+		}
+		for (const String &found_path : mdfind_paths) {
+			xcode_found = !found_path.is_empty() && DirAccess::dir_exists_absolute(found_path.strip_edges());
+			if (xcode_found) {
+				break;
+			}
 		}
-		xcode_found = DirAccess::dir_exists_absolute(xcode_path.strip_edges());
 	}
 	return xcode_found;
 }