diff --git a/CMakeLists.txt b/CMakeLists.txt
index ced2cbdd6..ed9dbefbc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -362,7 +362,7 @@ if(VIDEO_HW_DECODING)
     message("-- Building with FFmpeg HW decoding")
 endif()
 
-if(AUR_BUILD OR FLATPAK_BUILD OR RETRODECK OR RPI OR ANDROID)
+if(AUR_BUILD OR FLATPAK_BUILD OR RETRODECK OR RPI)
     set(APPLICATION_UPDATER OFF)
 endif()
 
diff --git a/es-app/src/ApplicationUpdater.cpp b/es-app/src/ApplicationUpdater.cpp
index e1f9b20a6..c6cdb08c5 100644
--- a/es-app/src/ApplicationUpdater.cpp
+++ b/es-app/src/ApplicationUpdater.cpp
@@ -229,7 +229,11 @@ void ApplicationUpdater::parseFile()
     if (doc.HasParseError())
         throw std::runtime_error(rapidjson::GetParseError_En(doc.GetParseError()));
 
+#if defined(__ANDROID__)
+    const std::vector<std::string> releaseTypes {"stable"};
+#else
     const std::vector<std::string> releaseTypes {"stable", "prerelease"};
+#endif
 
     for (auto& releaseType : releaseTypes) {
         Release release;
@@ -237,11 +241,19 @@ void ApplicationUpdater::parseFile()
             release.releaseType = releaseType.c_str();
             const rapidjson::Value& releaseTypeEntry {doc[releaseType.c_str()]};
 
+#if defined(__ANDROID__)
+            if (releaseTypeEntry.HasMember("androidVersionName") &&
+                releaseTypeEntry["androidVersionName"].IsString())
+                release.version = releaseTypeEntry["androidVersionName"].GetString();
+            else
+                throw std::runtime_error(
+                    "Invalid file structure, \"androidVersionName\" key missing");
+#else
             if (releaseTypeEntry.HasMember("version") && releaseTypeEntry["version"].IsString())
                 release.version = releaseTypeEntry["version"].GetString();
             else
                 throw std::runtime_error("Invalid file structure, \"version\" key missing");
-
+#endif
             // There may not be a prerelease available.
             if (releaseType == "prerelease" && release.version == "")
                 continue;
@@ -251,11 +263,25 @@ void ApplicationUpdater::parseFile()
             else
                 throw std::runtime_error("Invalid file structure, \"release\" key missing");
 
+#if defined(__ANDROID__)
+            if (releaseTypeEntry.HasMember("androidVersionCode") &&
+                releaseTypeEntry["androidVersionCode"].IsString())
+                release.androidVersionCode = releaseTypeEntry["androidVersionCode"].GetString();
+            else
+                throw std::runtime_error(
+                    "Invalid file structure, \"androidVersionCode\" key missing");
+
+            if (releaseTypeEntry.HasMember("androidDate") &&
+                releaseTypeEntry["androidDate"].IsString())
+                release.date = releaseTypeEntry["androidDate"].GetString();
+            else
+                throw std::runtime_error("Invalid file structure, \"androidDate\" key missing");
+#else
             if (releaseTypeEntry.HasMember("date") && releaseTypeEntry["date"].IsString())
                 release.date = releaseTypeEntry["date"].GetString();
             else
                 throw std::runtime_error("Invalid file structure, \"date\" key missing");
-
+#endif
             if (releaseTypeEntry.HasMember("packages") && releaseTypeEntry["packages"].IsArray()) {
                 const rapidjson::Value& packages {releaseTypeEntry["packages"]};
                 for (int i {0}; i < static_cast<int>(packages.Size()); ++i) {
@@ -341,6 +367,7 @@ void ApplicationUpdater::compareVersions()
 {
     std::deque<Release*> releaseTypes {&mStableRelease};
 
+#if !defined(__ANDROID__)
     if (mPrerelease.releaseNum != "") {
 #if defined(IS_PRERELEASE)
         releaseTypes.emplace_front(&mPrerelease);
@@ -349,6 +376,7 @@ void ApplicationUpdater::compareVersions()
             releaseTypes.emplace_front(&mPrerelease);
 #endif
     }
+#endif
 
     mNewVersion = false;
 
@@ -358,7 +386,15 @@ void ApplicationUpdater::compareVersions()
         if (releaseType->version == "" || releaseType->releaseNum == "" || releaseType->date == "")
             continue;
 
+#if defined(__ANDROID__)
+        // This should hopefully never happen.
+        if (releaseType->androidVersionCode == "")
+            continue;
+
+        mNewVersion = (std::stoi(releaseType->androidVersionCode) > ANDROID_VERSION_CODE);
+#else
         mNewVersion = (std::stoi(releaseType->releaseNum) > PROGRAM_RELEASE_NUMBER);
+#endif
 
         if (mNewVersion) {
             for (auto& package : releaseType->packages) {
@@ -386,8 +422,13 @@ void ApplicationUpdater::compareVersions()
             mPackage.message = mPackage.message.substr(0, 280);
 
             mLogInfo = "A new ";
-            mLogInfo.append(releaseType == &mStableRelease ? "stable release" : "prerelease")
+            mLogInfo
+#if defined(__ANDROID__)
+                .append("release is available from the app store: ")
+#else
+                .append(releaseType == &mStableRelease ? "stable release" : "prerelease")
                 .append(" is available for download at https://es-de.org: ")
+#endif
                 .append(releaseType->version)
                 .append(" (r")
                 .append(releaseType->releaseNum)
@@ -407,11 +448,15 @@ void ApplicationUpdater::compareVersions()
                 mResults.append("release available: ").append(releaseType->version);
             }
 
+#if defined(__ANDROID__)
+            mResults.append("\nApply update via the app store");
+#else
             if (mPackageType == PackageType::UNKNOWN)
                 mResults.append("\nFor more information visit\n").append("https://es-de.org");
 
             if (mPackage.message != "")
                 mResults.append("\n").append(mPackage.message);
+#endif
 
             mResults = Utils::String::toUpper(mResults);
             break;
@@ -450,10 +495,12 @@ bool ApplicationUpdater::getResults()
         LOG(LogInfo) << mLogInfo;
     }
 
+#if !defined(__ANDROID__)
     if (mNewVersion && mPackage.name == "") {
         LOG(LogDebug) << "ApplicationUpdater::getResults(): Couldn't find a package type matching "
                          "current build";
     }
+#endif
 
     return mNewVersion;
 }
diff --git a/es-app/src/ApplicationUpdater.h b/es-app/src/ApplicationUpdater.h
index 17e2ebd8a..0f13bc85b 100644
--- a/es-app/src/ApplicationUpdater.h
+++ b/es-app/src/ApplicationUpdater.h
@@ -51,6 +51,7 @@ private:
         std::string releaseType;
         std::string version;
         std::string releaseNum;
+        std::string androidVersionCode;
         std::string date;
         std::vector<Package> packages;
     };
diff --git a/es-app/src/guis/GuiMenu.cpp b/es-app/src/guis/GuiMenu.cpp
index 4ffcbd49a..f4ea7beec 100644
--- a/es-app/src/guis/GuiMenu.cpp
+++ b/es-app/src/guis/GuiMenu.cpp
@@ -1612,7 +1612,7 @@ void GuiMenu::openOtherOptions()
     });
 #endif
 
-#if defined(APPLICATION_UPDATER)
+#if defined(APPLICATION_UPDATER) && !defined(__ANDROID__)
 #if defined(IS_PRERELEASE)
     // Add a dummy entry to indicate that this setting is always enabled when running a prerelease.
     auto applicationUpdaterPrereleases = std::make_shared<SwitchComponent>();
@@ -1864,7 +1864,7 @@ void GuiMenu::openOtherOptions()
     });
 #endif
 
-#if defined(APPLICATION_UPDATER) && !defined(IS_PRERELEASE)
+#if defined(APPLICATION_UPDATER) && !defined(__ANDROID__) && !defined(IS_PRERELEASE)
     auto applicationUpdaterFrequencyFunc =
         [applicationUpdaterPrereleases](const std::string& frequency) {
             if (frequency == "never") {
@@ -2100,10 +2100,10 @@ void GuiMenu::addVersionInfo()
 #endif
 
 #if defined(IS_PRERELEASE)
-    mVersion.setText(applicationName + "  V" + Utils::String::toUpper(PROGRAM_VERSION_STRING) +
+    mVersion.setText(applicationName + "  " + Utils::String::toUpper(PROGRAM_VERSION_STRING) +
                      " (Built " + __DATE__ + ")");
 #else
-    mVersion.setText(applicationName + "  V" + Utils::String::toUpper(PROGRAM_VERSION_STRING));
+    mVersion.setText(applicationName + "  " + Utils::String::toUpper(PROGRAM_VERSION_STRING));
 #endif
 
     mVersion.setHorizontalAlignment(ALIGN_CENTER);
diff --git a/es-core/src/Settings.cpp b/es-core/src/Settings.cpp
index 284a8c737..d17ce8335 100644
--- a/es-core/src/Settings.cpp
+++ b/es-core/src/Settings.cpp
@@ -278,7 +278,9 @@ void Settings::setDefaults()
     mStringMap["SaveGamelistsMode"] = {"always", "always"};
     mStringMap["ApplicationUpdaterFrequency"] = {"always", "always"};
     mStringMap["ApplicationUpdaterDownloadDirectory"] = {"", ""};
+#if !defined(__ANDROID__)
     mBoolMap["ApplicationUpdaterPrereleases"] = {false, false};
+#endif
 #if defined(_WIN64)
     mBoolMap["HideTaskbar"] = {false, false};
 #endif