[Android export] Added validation of the project name when using $genname in the 'Unique Name' field.
This commit is contained in:
parent
b5f3ac522e
commit
b8bc306fa1
2 changed files with 33 additions and 5 deletions
|
@ -437,6 +437,14 @@ String EditorExportPlatformAndroid::get_project_name(const String &p_name) const
|
||||||
|
|
||||||
String EditorExportPlatformAndroid::get_package_name(const String &p_package) const {
|
String EditorExportPlatformAndroid::get_package_name(const String &p_package) const {
|
||||||
String pname = p_package;
|
String pname = p_package;
|
||||||
|
String name = get_valid_basename();
|
||||||
|
pname = pname.replace("$genname", name);
|
||||||
|
return pname;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the project name without invalid characters
|
||||||
|
// or the "noname" string if all characters are invalid.
|
||||||
|
String EditorExportPlatformAndroid::get_valid_basename() const {
|
||||||
String basename = GLOBAL_GET("application/config/name");
|
String basename = GLOBAL_GET("application/config/name");
|
||||||
basename = basename.to_lower();
|
basename = basename.to_lower();
|
||||||
|
|
||||||
|
@ -452,13 +460,12 @@ String EditorExportPlatformAndroid::get_package_name(const String &p_package) co
|
||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name.is_empty()) {
|
if (name.is_empty()) {
|
||||||
name = "noname";
|
name = "noname";
|
||||||
}
|
}
|
||||||
|
|
||||||
pname = pname.replace("$genname", name);
|
return name;
|
||||||
|
|
||||||
return pname;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String EditorExportPlatformAndroid::get_assets_directory(const Ref<EditorExportPreset> &p_preset, int p_export_format) const {
|
String EditorExportPlatformAndroid::get_assets_directory(const Ref<EditorExportPreset> &p_preset, int p_export_format) const {
|
||||||
|
@ -466,7 +473,7 @@ String EditorExportPlatformAndroid::get_assets_directory(const Ref<EditorExportP
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EditorExportPlatformAndroid::is_package_name_valid(const String &p_package, String *r_error) const {
|
bool EditorExportPlatformAndroid::is_package_name_valid(const String &p_package, String *r_error) const {
|
||||||
String pname = p_package;
|
String pname = get_package_name(p_package);
|
||||||
|
|
||||||
if (pname.length() == 0) {
|
if (pname.length() == 0) {
|
||||||
if (r_error) {
|
if (r_error) {
|
||||||
|
@ -525,6 +532,24 @@ bool EditorExportPlatformAndroid::is_package_name_valid(const String &p_package,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (p_package.find("$genname") >= 0 && !is_project_name_valid()) {
|
||||||
|
if (r_error) {
|
||||||
|
*r_error = TTR("The project name does not meet the requirement for the package name format. Please explicitly specify the package name.");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool EditorExportPlatformAndroid::is_project_name_valid() const {
|
||||||
|
// Get the original project name and convert to lowercase.
|
||||||
|
String basename = GLOBAL_GET("application/config/name");
|
||||||
|
basename = basename.to_lower();
|
||||||
|
// Check if there are invalid characters.
|
||||||
|
if (basename != get_valid_basename()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2286,7 +2311,7 @@ bool EditorExportPlatformAndroid::has_valid_project_configuration(const Ref<Edit
|
||||||
String pn = p_preset->get("package/unique_name");
|
String pn = p_preset->get("package/unique_name");
|
||||||
String pn_err;
|
String pn_err;
|
||||||
|
|
||||||
if (!is_package_name_valid(get_package_name(pn), &pn_err)) {
|
if (!is_package_name_valid(pn, &pn_err)) {
|
||||||
valid = false;
|
valid = false;
|
||||||
err += TTR("Invalid package name:") + " " + pn_err + "\n";
|
err += TTR("Invalid package name:") + " " + pn_err + "\n";
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,9 +91,12 @@ class EditorExportPlatformAndroid : public EditorExportPlatform {
|
||||||
|
|
||||||
String get_package_name(const String &p_package) const;
|
String get_package_name(const String &p_package) const;
|
||||||
|
|
||||||
|
String get_valid_basename() const;
|
||||||
|
|
||||||
String get_assets_directory(const Ref<EditorExportPreset> &p_preset, int p_export_format) const;
|
String get_assets_directory(const Ref<EditorExportPreset> &p_preset, int p_export_format) const;
|
||||||
|
|
||||||
bool is_package_name_valid(const String &p_package, String *r_error = nullptr) const;
|
bool is_package_name_valid(const String &p_package, String *r_error = nullptr) const;
|
||||||
|
bool is_project_name_valid() const;
|
||||||
|
|
||||||
static bool _should_compress_asset(const String &p_path, const Vector<uint8_t> &p_data);
|
static bool _should_compress_asset(const String &p_path, const Vector<uint8_t> &p_data);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue