|
@@ -530,7 +530,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) {
|
|
@@ -570,7 +570,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;
|
|
@@ -588,7 +587,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);
|
|
@@ -674,7 +672,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) {
|
|
@@ -712,7 +710,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;
|
|
@@ -760,7 +757,6 @@ Error EditorExportPlatformIOS::_export_loading_screen_images(const Ref<EditorExp
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- memdelete(da);
|
|
|
|
|
|
return OK;
|
|
|
}
|
|
@@ -966,21 +962,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;
|
|
|
}
|
|
|
|
|
@@ -1040,19 +1030,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 };
|
|
@@ -1117,8 +1106,6 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- memdelete(filesystem_da);
|
|
|
-
|
|
|
return OK;
|
|
|
}
|
|
|
|
|
@@ -1423,29 +1410,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)) {
|
|
@@ -1501,7 +1488,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...");
|
|
@@ -1580,7 +1567,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;
|
|
|
}
|
|
|
}
|
|
@@ -1590,7 +1576,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());
|
|
@@ -1613,7 +1598,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;
|
|
|
}
|
|
|
|
|
@@ -1671,7 +1655,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;
|
|
|
}
|
|
|
}
|
|
@@ -1682,7 +1665,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;
|
|
|
}
|
|
@@ -1692,43 +1674,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;
|
|
|
}
|
|
@@ -1747,15 +1729,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;
|