|
@@ -534,7 +534,7 @@ Error EditorExportPlatformIOS::_export_icons(const Ref<EditorExportPreset> &p_pr
|
|
|
String json_description = "{\"images\":[";
|
|
|
String sizes;
|
|
|
|
|
|
- DirAccess *da = DirAccess::open(p_iconset_dir);
|
|
|
+ DirAccessRef da = DirAccess::open(p_iconset_dir);
|
|
|
ERR_FAIL_COND_V_MSG(!da, ERR_CANT_OPEN, "Cannot open directory '" + p_iconset_dir + "'.");
|
|
|
|
|
|
for (uint64_t i = 0; i < (sizeof(icon_infos) / sizeof(icon_infos[0])); ++i) {
|
|
@@ -574,7 +574,6 @@ Error EditorExportPlatformIOS::_export_icons(const Ref<EditorExportPreset> &p_pr
|
|
|
}
|
|
|
|
|
|
if (err) {
|
|
|
- memdelete(da);
|
|
|
String err_str = String("Failed to export icon(" + String(info.preset_key) + "): '" + icon_path + "'.");
|
|
|
ERR_PRINT(err_str.utf8().get_data());
|
|
|
return err;
|
|
@@ -592,7 +591,6 @@ Error EditorExportPlatformIOS::_export_icons(const Ref<EditorExportPreset> &p_pr
|
|
|
json_description += String("}");
|
|
|
}
|
|
|
json_description += "]}";
|
|
|
- memdelete(da);
|
|
|
|
|
|
FileAccess *json_file = FileAccess::open(p_iconset_dir + "Contents.json", FileAccess::WRITE);
|
|
|
ERR_FAIL_COND_V(!json_file, ERR_CANT_CREATE);
|
|
@@ -678,7 +676,7 @@ Error EditorExportPlatformIOS::_export_loading_screen_file(const Ref<EditorExpor
|
|
|
}
|
|
|
|
|
|
Error EditorExportPlatformIOS::_export_loading_screen_images(const Ref<EditorExportPreset> &p_preset, const String &p_dest_dir) {
|
|
|
- DirAccess *da = DirAccess::open(p_dest_dir);
|
|
|
+ DirAccessRef da = DirAccess::open(p_dest_dir);
|
|
|
ERR_FAIL_COND_V_MSG(!da, ERR_CANT_OPEN, "Cannot open directory '" + p_dest_dir + "'.");
|
|
|
|
|
|
for (uint64_t i = 0; i < sizeof(loading_screen_infos) / sizeof(loading_screen_infos[0]); ++i) {
|
|
@@ -716,7 +714,6 @@ Error EditorExportPlatformIOS::_export_loading_screen_images(const Ref<EditorExp
|
|
|
err = da->copy(loading_screen_file, p_dest_dir + info.export_name);
|
|
|
}
|
|
|
if (err) {
|
|
|
- memdelete(da);
|
|
|
String err_str = String("Failed to export loading screen (") + info.preset_key + ") from path '" + loading_screen_file + "'.";
|
|
|
ERR_PRINT(err_str.utf8().get_data());
|
|
|
return err;
|
|
@@ -764,7 +761,6 @@ Error EditorExportPlatformIOS::_export_loading_screen_images(const Ref<EditorExp
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- memdelete(da);
|
|
|
|
|
|
return OK;
|
|
|
}
|
|
@@ -970,21 +966,15 @@ void EditorExportPlatformIOS::_add_assets_to_project(const Ref<EditorExportPrese
|
|
|
}
|
|
|
|
|
|
Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String &p_asset, const String *p_custom_file_name, bool p_is_framework, bool p_should_embed, Vector<IOSExportAsset> &r_exported_assets) {
|
|
|
- DirAccess *filesystem_da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
|
|
- ERR_FAIL_COND_V_MSG(!filesystem_da, ERR_CANT_CREATE, "Cannot create DirAccess for path '" + p_out_dir + "'.");
|
|
|
-
|
|
|
String binary_name = p_out_dir.get_file().get_basename();
|
|
|
|
|
|
- DirAccess *da = DirAccess::create_for_path(p_asset);
|
|
|
+ DirAccessRef da = DirAccess::create_for_path(p_asset);
|
|
|
if (!da) {
|
|
|
- memdelete(filesystem_da);
|
|
|
ERR_FAIL_V_MSG(ERR_CANT_CREATE, "Can't create directory: " + p_asset + ".");
|
|
|
}
|
|
|
bool file_exists = da->file_exists(p_asset);
|
|
|
bool dir_exists = da->dir_exists(p_asset);
|
|
|
if (!file_exists && !dir_exists) {
|
|
|
- memdelete(da);
|
|
|
- memdelete(filesystem_da);
|
|
|
return ERR_FILE_NOT_FOUND;
|
|
|
}
|
|
|
|
|
@@ -1044,19 +1034,18 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
|
|
destination = p_out_dir.plus_file(asset_path);
|
|
|
}
|
|
|
|
|
|
+ DirAccessRef filesystem_da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
|
|
+ ERR_FAIL_COND_V_MSG(!filesystem_da, ERR_CANT_CREATE, "Cannot create DirAccess for path '" + p_out_dir + "'.");
|
|
|
+
|
|
|
if (!filesystem_da->dir_exists(destination_dir)) {
|
|
|
Error make_dir_err = filesystem_da->make_dir_recursive(destination_dir);
|
|
|
if (make_dir_err) {
|
|
|
- memdelete(da);
|
|
|
- memdelete(filesystem_da);
|
|
|
return make_dir_err;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Error err = dir_exists ? da->copy_dir(p_asset, destination) : da->copy(p_asset, destination);
|
|
|
- memdelete(da);
|
|
|
if (err) {
|
|
|
- memdelete(filesystem_da);
|
|
|
return err;
|
|
|
}
|
|
|
IOSExportAsset exported_asset = { binary_name.plus_file(asset_path), p_is_framework, p_should_embed };
|
|
@@ -1121,8 +1110,6 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- memdelete(filesystem_da);
|
|
|
-
|
|
|
return OK;
|
|
|
}
|
|
|
|
|
@@ -1427,29 +1414,29 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
|
|
return ERR_FILE_BAD_PATH;
|
|
|
}
|
|
|
|
|
|
- DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
|
|
- if (da) {
|
|
|
- String current_dir = da->get_current_dir();
|
|
|
-
|
|
|
- // remove leftovers from last export so they don't interfere
|
|
|
- // in case some files are no longer needed
|
|
|
- if (da->change_dir(dest_dir + binary_name + ".xcodeproj") == OK) {
|
|
|
- da->erase_contents_recursive();
|
|
|
- }
|
|
|
- if (da->change_dir(dest_dir + binary_name) == OK) {
|
|
|
- da->erase_contents_recursive();
|
|
|
- }
|
|
|
+ {
|
|
|
+ DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
|
|
+ if (da) {
|
|
|
+ String current_dir = da->get_current_dir();
|
|
|
+
|
|
|
+ // remove leftovers from last export so they don't interfere
|
|
|
+ // in case some files are no longer needed
|
|
|
+ if (da->change_dir(dest_dir + binary_name + ".xcodeproj") == OK) {
|
|
|
+ da->erase_contents_recursive();
|
|
|
+ }
|
|
|
+ if (da->change_dir(dest_dir + binary_name) == OK) {
|
|
|
+ da->erase_contents_recursive();
|
|
|
+ }
|
|
|
|
|
|
- da->change_dir(current_dir);
|
|
|
+ da->change_dir(current_dir);
|
|
|
|
|
|
- if (!da->dir_exists(dest_dir + binary_name)) {
|
|
|
- Error err = da->make_dir(dest_dir + binary_name);
|
|
|
- if (err) {
|
|
|
- memdelete(da);
|
|
|
- return err;
|
|
|
+ if (!da->dir_exists(dest_dir + binary_name)) {
|
|
|
+ Error err = da->make_dir(dest_dir + binary_name);
|
|
|
+ if (err) {
|
|
|
+ return err;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- memdelete(da);
|
|
|
}
|
|
|
|
|
|
if (ep.step("Making .pck", 0)) {
|
|
@@ -1507,7 +1494,7 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
|
|
|
|
|
Vector<IOSExportAsset> assets;
|
|
|
|
|
|
- DirAccess *tmp_app_path = DirAccess::create_for_path(dest_dir);
|
|
|
+ DirAccessRef tmp_app_path = DirAccess::create_for_path(dest_dir);
|
|
|
ERR_FAIL_COND_V(!tmp_app_path, ERR_CANT_CREATE);
|
|
|
|
|
|
print_line("Unzipping...");
|
|
@@ -1586,7 +1573,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
|
|
if (dir_err) {
|
|
|
ERR_PRINT("Can't create '" + dir_name + "'.");
|
|
|
unzClose(src_pkg_zip);
|
|
|
- memdelete(tmp_app_path);
|
|
|
return ERR_CANT_CREATE;
|
|
|
}
|
|
|
}
|
|
@@ -1596,7 +1582,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
|
|
if (!f) {
|
|
|
ERR_PRINT("Can't write '" + file + "'.");
|
|
|
unzClose(src_pkg_zip);
|
|
|
- memdelete(tmp_app_path);
|
|
|
return ERR_CANT_CREATE;
|
|
|
};
|
|
|
f->store_buffer(data.ptr(), data.size());
|
|
@@ -1619,7 +1604,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
|
|
|
|
|
if (!found_library) {
|
|
|
ERR_PRINT("Requested template library '" + library_to_use + "' not found. It might be missing from your template archive.");
|
|
|
- memdelete(tmp_app_path);
|
|
|
return ERR_FILE_NOT_FOUND;
|
|
|
}
|
|
|
|
|
@@ -1656,7 +1640,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
|
|
Error lib_copy_err = tmp_app_path->copy(static_lib_path, dest_lib_file_path);
|
|
|
if (lib_copy_err != OK) {
|
|
|
ERR_PRINT("Can't copy '" + static_lib_path + "'.");
|
|
|
- memdelete(tmp_app_path);
|
|
|
return lib_copy_err;
|
|
|
}
|
|
|
}
|
|
@@ -1667,7 +1650,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
|
|
if (!tmp_app_path->dir_exists(iconset_dir)) {
|
|
|
err = tmp_app_path->make_dir_recursive(iconset_dir);
|
|
|
}
|
|
|
- memdelete(tmp_app_path);
|
|
|
if (err) {
|
|
|
return err;
|
|
|
}
|
|
@@ -1677,43 +1659,43 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
- bool use_storyboard = p_preset->get("storyboard/use_launch_screen_storyboard");
|
|
|
+ {
|
|
|
+ bool use_storyboard = p_preset->get("storyboard/use_launch_screen_storyboard");
|
|
|
|
|
|
- String launch_image_path = dest_dir + binary_name + "/Images.xcassets/LaunchImage.launchimage/";
|
|
|
- String splash_image_path = dest_dir + binary_name + "/Images.xcassets/SplashImage.imageset/";
|
|
|
+ String launch_image_path = dest_dir + binary_name + "/Images.xcassets/LaunchImage.launchimage/";
|
|
|
+ String splash_image_path = dest_dir + binary_name + "/Images.xcassets/SplashImage.imageset/";
|
|
|
|
|
|
- DirAccess *launch_screen_da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
|
|
+ DirAccessRef launch_screen_da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
|
|
|
|
|
- if (!launch_screen_da) {
|
|
|
- return ERR_CANT_CREATE;
|
|
|
- }
|
|
|
+ if (!launch_screen_da) {
|
|
|
+ return ERR_CANT_CREATE;
|
|
|
+ }
|
|
|
|
|
|
- if (use_storyboard) {
|
|
|
- print_line("Using Launch Storyboard");
|
|
|
+ if (use_storyboard) {
|
|
|
+ print_line("Using Launch Storyboard");
|
|
|
|
|
|
- if (launch_screen_da->change_dir(launch_image_path) == OK) {
|
|
|
- launch_screen_da->erase_contents_recursive();
|
|
|
- launch_screen_da->remove(launch_image_path);
|
|
|
- }
|
|
|
+ if (launch_screen_da->change_dir(launch_image_path) == OK) {
|
|
|
+ launch_screen_da->erase_contents_recursive();
|
|
|
+ launch_screen_da->remove(launch_image_path);
|
|
|
+ }
|
|
|
|
|
|
- err = _export_loading_screen_file(p_preset, splash_image_path);
|
|
|
- } else {
|
|
|
- print_line("Using Launch Images");
|
|
|
+ err = _export_loading_screen_file(p_preset, splash_image_path);
|
|
|
+ } else {
|
|
|
+ print_line("Using Launch Images");
|
|
|
|
|
|
- const String launch_screen_path = dest_dir + binary_name + "/Launch Screen.storyboard";
|
|
|
+ const String launch_screen_path = dest_dir + binary_name + "/Launch Screen.storyboard";
|
|
|
|
|
|
- launch_screen_da->remove(launch_screen_path);
|
|
|
+ launch_screen_da->remove(launch_screen_path);
|
|
|
|
|
|
- if (launch_screen_da->change_dir(splash_image_path) == OK) {
|
|
|
- launch_screen_da->erase_contents_recursive();
|
|
|
- launch_screen_da->remove(splash_image_path);
|
|
|
- }
|
|
|
+ if (launch_screen_da->change_dir(splash_image_path) == OK) {
|
|
|
+ launch_screen_da->erase_contents_recursive();
|
|
|
+ launch_screen_da->remove(splash_image_path);
|
|
|
+ }
|
|
|
|
|
|
- err = _export_loading_screen_images(p_preset, launch_image_path);
|
|
|
+ err = _export_loading_screen_images(p_preset, launch_image_path);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- memdelete(launch_screen_da);
|
|
|
-
|
|
|
if (err) {
|
|
|
return err;
|
|
|
}
|
|
@@ -1732,15 +1714,17 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
|
|
memdelete(f);
|
|
|
|
|
|
#ifdef OSX_ENABLED
|
|
|
- if (ep.step("Code-signing dylibs", 2)) {
|
|
|
- return ERR_SKIP;
|
|
|
+ {
|
|
|
+ if (ep.step("Code-signing dylibs", 2)) {
|
|
|
+ return ERR_SKIP;
|
|
|
+ }
|
|
|
+ DirAccess *dylibs_dir = DirAccess::open(dest_dir + binary_name + "/dylibs");
|
|
|
+ ERR_FAIL_COND_V(!dylibs_dir, ERR_CANT_OPEN);
|
|
|
+ CodesignData codesign_data(p_preset, p_debug);
|
|
|
+ err = _walk_dir_recursive(dylibs_dir, _codesign, &codesign_data);
|
|
|
+ memdelete(dylibs_dir);
|
|
|
+ ERR_FAIL_COND_V(err, err);
|
|
|
}
|
|
|
- DirAccess *dylibs_dir = DirAccess::open(dest_dir + binary_name + "/dylibs");
|
|
|
- ERR_FAIL_COND_V(!dylibs_dir, ERR_CANT_OPEN);
|
|
|
- CodesignData codesign_data(p_preset, p_debug);
|
|
|
- err = _walk_dir_recursive(dylibs_dir, _codesign, &codesign_data);
|
|
|
- memdelete(dylibs_dir);
|
|
|
- ERR_FAIL_COND_V(err, err);
|
|
|
|
|
|
if (ep.step("Making .xcarchive", 3)) {
|
|
|
return ERR_SKIP;
|