You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Add get_distribution_name() and get_version() to OS
supports: LinuxBSD, Windows, macOS, iOS, Android, UWP Co-authored-by: bruvzg
This commit is contained in:
@@ -44,6 +44,7 @@
|
||||
#include "net_socket_android.h"
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <sys/system_properties.h>
|
||||
|
||||
#include "java_godot_io_wrapper.h"
|
||||
#include "java_godot_wrapper.h"
|
||||
@@ -175,6 +176,79 @@ String OS_Android::get_name() const {
|
||||
return "Android";
|
||||
}
|
||||
|
||||
String OS_Android::get_system_property(const char *key) const {
|
||||
static String value;
|
||||
char value_str[PROP_VALUE_MAX];
|
||||
if (__system_property_get(key, value_str)) {
|
||||
value = String(value_str);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
String OS_Android::get_distribution_name() const {
|
||||
if (!get_system_property("ro.havoc.version").is_empty()) {
|
||||
return "Havoc OS";
|
||||
} else if (!get_system_property("org.pex.version").is_empty()) { // Putting before "Pixel Experience", because it's derivating from it.
|
||||
return "Pixel Extended";
|
||||
} else if (!get_system_property("org.pixelexperience.version").is_empty()) {
|
||||
return "Pixel Experience";
|
||||
} else if (!get_system_property("ro.potato.version").is_empty()) {
|
||||
return "POSP";
|
||||
} else if (!get_system_property("ro.xtended.version").is_empty()) {
|
||||
return "Project-Xtended";
|
||||
} else if (!get_system_property("org.evolution.version").is_empty()) {
|
||||
return "Evolution X";
|
||||
} else if (!get_system_property("ro.corvus.version").is_empty()) {
|
||||
return "Corvus-Q";
|
||||
} else if (!get_system_property("ro.pa.version").is_empty()) {
|
||||
return "Paranoid Android";
|
||||
} else if (!get_system_property("ro.crdroid.version").is_empty()) {
|
||||
return "crDroid Android";
|
||||
} else if (!get_system_property("ro.syberia.version").is_empty()) {
|
||||
return "Syberia Project";
|
||||
} else if (!get_system_property("ro.arrow.version").is_empty()) {
|
||||
return "ArrowOS";
|
||||
} else if (!get_system_property("ro.lineage.version").is_empty()) { // Putting LineageOS last, just in case any derivative writes to "ro.lineage.version".
|
||||
return "LineageOS";
|
||||
}
|
||||
|
||||
if (!get_system_property("ro.modversion").is_empty()) { // Handles other Android custom ROMs.
|
||||
return vformat("%s %s", get_name(), "Custom ROM");
|
||||
}
|
||||
|
||||
// Handles stock Android.
|
||||
return get_name();
|
||||
}
|
||||
|
||||
String OS_Android::get_version() const {
|
||||
const Vector<const char *> roms = { "ro.havoc.version", "org.pex.version", "org.pixelexperience.version",
|
||||
"ro.potato.version", "ro.xtended.version", "org.evolution.version", "ro.corvus.version", "ro.pa.version",
|
||||
"ro.crdroid.version", "ro.syberia.version", "ro.arrow.version", "ro.lineage.version" };
|
||||
for (int i = 0; i < roms.size(); i++) {
|
||||
static String rom_version = get_system_property(roms[i]);
|
||||
if (!rom_version.is_empty()) {
|
||||
return rom_version;
|
||||
}
|
||||
}
|
||||
|
||||
static String mod_version = get_system_property("ro.modversion"); // Handles other Android custom ROMs.
|
||||
if (!mod_version.is_empty()) {
|
||||
return mod_version;
|
||||
}
|
||||
|
||||
// Handles stock Android.
|
||||
static String sdk_version = get_system_property("ro.build.version.sdk_int");
|
||||
static String build = get_system_property("ro.build.version.incremental");
|
||||
if (!sdk_version.is_empty()) {
|
||||
if (!build.is_empty()) {
|
||||
return vformat("%s.%s", sdk_version, build);
|
||||
}
|
||||
return sdk_version;
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
MainLoop *OS_Android::get_main_loop() const {
|
||||
return main_loop;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user