[iOS] Fix iOS export with manually specified signing/provisioning data.
This commit is contained in:
parent
203e07aa39
commit
57db989a97
@ -308,6 +308,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = "$binary/$binary.entitlements";
|
CODE_SIGN_ENTITLEMENTS = "$binary/$binary.entitlements";
|
||||||
CODE_SIGN_IDENTITY = "$code_sign_identity_debug";
|
CODE_SIGN_IDENTITY = "$code_sign_identity_debug";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "$code_sign_identity_debug";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "$code_sign_identity_debug";
|
||||||
|
CODE_SIGN_STYLE = "$code_sign_style_debug";
|
||||||
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
|
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
|
||||||
DEVELOPMENT_TEAM = $team_id;
|
DEVELOPMENT_TEAM = $team_id;
|
||||||
INFOPLIST_FILE = "$binary/$binary-Info.plist";
|
INFOPLIST_FILE = "$binary/$binary-Info.plist";
|
||||||
@ -338,6 +339,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = "$binary/$binary.entitlements";
|
CODE_SIGN_ENTITLEMENTS = "$binary/$binary.entitlements";
|
||||||
CODE_SIGN_IDENTITY = "$code_sign_identity_release";
|
CODE_SIGN_IDENTITY = "$code_sign_identity_release";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "$code_sign_identity_release";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "$code_sign_identity_release";
|
||||||
|
CODE_SIGN_STYLE = "$code_sign_style_release";
|
||||||
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
|
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
|
||||||
DEVELOPMENT_TEAM = $team_id;
|
DEVELOPMENT_TEAM = $team_id;
|
||||||
INFOPLIST_FILE = "$binary/$binary-Info.plist";
|
INFOPLIST_FILE = "$binary/$binary-Info.plist";
|
||||||
|
@ -83,7 +83,7 @@ void EditorExportPlatformIOS::get_export_options(List<ExportOption> *r_options)
|
|||||||
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/app_store_team_id"), ""));
|
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/app_store_team_id"), ""));
|
||||||
|
|
||||||
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/provisioning_profile_uuid_debug"), ""));
|
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/provisioning_profile_uuid_debug"), ""));
|
||||||
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/code_sign_identity_debug", PROPERTY_HINT_PLACEHOLDER_TEXT, "iPhone Developer"), "iPhone Developer"));
|
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/code_sign_identity_debug", PROPERTY_HINT_PLACEHOLDER_TEXT, "iPhone Developer"), ""));
|
||||||
r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "application/export_method_debug", PROPERTY_HINT_ENUM, "App Store,Development,Ad-Hoc,Enterprise"), 1));
|
r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "application/export_method_debug", PROPERTY_HINT_ENUM, "App Store,Development,Ad-Hoc,Enterprise"), 1));
|
||||||
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/provisioning_profile_uuid_release"), ""));
|
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/provisioning_profile_uuid_release"), ""));
|
||||||
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/code_sign_identity_release", PROPERTY_HINT_PLACEHOLDER_TEXT, "iPhone Distribution"), ""));
|
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/code_sign_identity_release", PROPERTY_HINT_PLACEHOLDER_TEXT, "iPhone Distribution"), ""));
|
||||||
@ -178,6 +178,10 @@ void EditorExportPlatformIOS::_fix_config_file(const Ref<EditorExportPreset> &p_
|
|||||||
"scaleAspectFill",
|
"scaleAspectFill",
|
||||||
"scaleToFill"
|
"scaleToFill"
|
||||||
};
|
};
|
||||||
|
String dbg_sign_id = p_preset->get("application/code_sign_identity_debug").operator String().is_empty() ? "iPhone Developer" : p_preset->get("application/code_sign_identity_debug");
|
||||||
|
String rel_sign_id = p_preset->get("application/code_sign_identity_release").operator String().is_empty() ? "iPhone Distribution" : p_preset->get("application/code_sign_identity_release");
|
||||||
|
bool dbg_manual = !p_preset->get("application/provisioning_profile_uuid_debug").operator String().is_empty() || (dbg_sign_id != "iPhone Developer");
|
||||||
|
bool rel_manual = !p_preset->get("application/provisioning_profile_uuid_release").operator String().is_empty() || (rel_sign_id != "iPhone Distribution");
|
||||||
String str;
|
String str;
|
||||||
String strnew;
|
String strnew;
|
||||||
str.parse_utf8((const char *)pfile.ptr(), pfile.size());
|
str.parse_utf8((const char *)pfile.ptr(), pfile.size());
|
||||||
@ -218,13 +222,25 @@ void EditorExportPlatformIOS::_fix_config_file(const Ref<EditorExportPreset> &p_
|
|||||||
strnew += lines[i].replace("$provisioning_profile_uuid_release", p_preset->get("application/provisioning_profile_uuid_release")) + "\n";
|
strnew += lines[i].replace("$provisioning_profile_uuid_release", p_preset->get("application/provisioning_profile_uuid_release")) + "\n";
|
||||||
} else if (lines[i].find("$provisioning_profile_uuid_debug") != -1) {
|
} else if (lines[i].find("$provisioning_profile_uuid_debug") != -1) {
|
||||||
strnew += lines[i].replace("$provisioning_profile_uuid_debug", p_preset->get("application/provisioning_profile_uuid_debug")) + "\n";
|
strnew += lines[i].replace("$provisioning_profile_uuid_debug", p_preset->get("application/provisioning_profile_uuid_debug")) + "\n";
|
||||||
|
} else if (lines[i].find("$code_sign_style_debug") != -1) {
|
||||||
|
if (dbg_manual) {
|
||||||
|
strnew += lines[i].replace("$code_sign_style_debug", "Manual") + "\n";
|
||||||
|
} else {
|
||||||
|
strnew += lines[i].replace("$code_sign_style_debug", "Automatic") + "\n";
|
||||||
|
}
|
||||||
|
} else if (lines[i].find("$code_sign_style_release") != -1) {
|
||||||
|
if (rel_manual) {
|
||||||
|
strnew += lines[i].replace("$code_sign_style_release", "Manual") + "\n";
|
||||||
|
} else {
|
||||||
|
strnew += lines[i].replace("$code_sign_style_release", "Automatic") + "\n";
|
||||||
|
}
|
||||||
} else if (lines[i].find("$provisioning_profile_uuid") != -1) {
|
} else if (lines[i].find("$provisioning_profile_uuid") != -1) {
|
||||||
String uuid = p_debug ? p_preset->get("application/provisioning_profile_uuid_debug") : p_preset->get("application/provisioning_profile_uuid_release");
|
String uuid = p_debug ? p_preset->get("application/provisioning_profile_uuid_debug") : p_preset->get("application/provisioning_profile_uuid_release");
|
||||||
strnew += lines[i].replace("$provisioning_profile_uuid", uuid) + "\n";
|
strnew += lines[i].replace("$provisioning_profile_uuid", uuid) + "\n";
|
||||||
} else if (lines[i].find("$code_sign_identity_debug") != -1) {
|
} else if (lines[i].find("$code_sign_identity_debug") != -1) {
|
||||||
strnew += lines[i].replace("$code_sign_identity_debug", p_preset->get("application/code_sign_identity_debug")) + "\n";
|
strnew += lines[i].replace("$code_sign_identity_debug", dbg_sign_id) + "\n";
|
||||||
} else if (lines[i].find("$code_sign_identity_release") != -1) {
|
} else if (lines[i].find("$code_sign_identity_release") != -1) {
|
||||||
strnew += lines[i].replace("$code_sign_identity_release", p_preset->get("application/code_sign_identity_release")) + "\n";
|
strnew += lines[i].replace("$code_sign_identity_release", rel_sign_id) + "\n";
|
||||||
} else if (lines[i].find("$additional_plist_content") != -1) {
|
} else if (lines[i].find("$additional_plist_content") != -1) {
|
||||||
strnew += lines[i].replace("$additional_plist_content", p_config.plist_content) + "\n";
|
strnew += lines[i].replace("$additional_plist_content", p_config.plist_content) + "\n";
|
||||||
} else if (lines[i].find("$godot_archs") != -1) {
|
} else if (lines[i].find("$godot_archs") != -1) {
|
||||||
@ -770,10 +786,18 @@ Error EditorExportPlatformIOS::_codesign(String p_file, void *p_userdata) {
|
|||||||
if (p_file.ends_with(".dylib")) {
|
if (p_file.ends_with(".dylib")) {
|
||||||
CodesignData *data = (CodesignData *)p_userdata;
|
CodesignData *data = (CodesignData *)p_userdata;
|
||||||
print_line(String("Signing ") + p_file);
|
print_line(String("Signing ") + p_file);
|
||||||
|
|
||||||
|
String sign_id;
|
||||||
|
if (data->debug) {
|
||||||
|
sign_id = data->preset->get("application/code_sign_identity_debug").operator String().is_empty() ? "iPhone Developer" : data->preset->get("application/code_sign_identity_debug");
|
||||||
|
} else {
|
||||||
|
sign_id = data->preset->get("application/code_sign_identity_release").operator String().is_empty() ? "iPhone Distribution" : data->preset->get("application/code_sign_identity_release");
|
||||||
|
}
|
||||||
|
|
||||||
List<String> codesign_args;
|
List<String> codesign_args;
|
||||||
codesign_args.push_back("-f");
|
codesign_args.push_back("-f");
|
||||||
codesign_args.push_back("-s");
|
codesign_args.push_back("-s");
|
||||||
codesign_args.push_back(data->preset->get(data->debug ? "application/code_sign_identity_debug" : "application/code_sign_identity_release"));
|
codesign_args.push_back(sign_id);
|
||||||
codesign_args.push_back(p_file);
|
codesign_args.push_back(p_file);
|
||||||
return OS::get_singleton()->execute("codesign", codesign_args);
|
return OS::get_singleton()->execute("codesign", codesign_args);
|
||||||
}
|
}
|
||||||
@ -1680,6 +1704,7 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
|||||||
archive_args.push_back("-destination");
|
archive_args.push_back("-destination");
|
||||||
archive_args.push_back("generic/platform=iOS");
|
archive_args.push_back("generic/platform=iOS");
|
||||||
archive_args.push_back("archive");
|
archive_args.push_back("archive");
|
||||||
|
archive_args.push_back("-allowProvisioningUpdates");
|
||||||
archive_args.push_back("-archivePath");
|
archive_args.push_back("-archivePath");
|
||||||
archive_args.push_back(archive_path);
|
archive_args.push_back(archive_path);
|
||||||
String archive_str;
|
String archive_str;
|
||||||
|
Loading…
Reference in New Issue
Block a user