From 53a17e6146dbce9f95fc7f98c24169d01ab97404 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner <hans@eds.org> Date: Wed, 7 Jun 2017 17:33:37 +0200 Subject: [PATCH] add failsafe pref to disable using new index If the client fails due to some bug in handling index-v1.jar, then it will be totally stuck, even if index.jar would have worked. This creates a new, temporary "expert" preference to force the client only use the old XML index file. Worst comes to worst, we can tell people to enable this to upgrade. Once everything proves stable, we can remove this. --- app/src/main/java/org/fdroid/fdroid/Preferences.java | 6 ++++++ app/src/main/java/org/fdroid/fdroid/UpdateService.java | 2 +- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/preferences.xml | 6 ++++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/Preferences.java b/app/src/main/java/org/fdroid/fdroid/Preferences.java index fa4079a77..60d6f7964 100644 --- a/app/src/main/java/org/fdroid/fdroid/Preferences.java +++ b/app/src/main/java/org/fdroid/fdroid/Preferences.java @@ -53,6 +53,7 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh public static final String PREF_UNSTABLE_UPDATES = "unstableUpdates"; public static final String PREF_KEEP_INSTALL_HISTORY = "keepInstallHistory"; public static final String PREF_EXPERT = "expert"; + public static final String PREF_FORCE_OLD_INDEX = "forceOldIndex"; public static final String PREF_PRIVILEGED_INSTALLER = "privilegedInstaller"; public static final String PREF_UNINSTALL_PRIVILEGED_APP = "uninstallPrivilegedApp"; public static final String PREF_LOCAL_REPO_NAME = "localRepoName"; @@ -82,6 +83,7 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh public static final String DEFAULT_PROXY_HOST = "127.0.0.1"; public static final int DEFAULT_PROXY_PORT = 8118; private static final boolean DEFAULT_SHOW_NFC_DURING_SWAP = true; + private static final boolean DEFAULT_FORCE_OLD_INDEX = false; private static final boolean DEFAULT_POST_PRIVILEGED_INSTALL = false; public enum Theme { @@ -114,6 +116,10 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh initialized.put(key, false); } + public boolean isForceOldIndexEnabled() { + return preferences.getBoolean(PREF_FORCE_OLD_INDEX, DEFAULT_FORCE_OLD_INDEX); + } + /** * Whether to use the Privileged Installer, based on if it is installed. Only the disabled * state is stored as a preference since the enabled state is based entirely on the presence diff --git a/app/src/main/java/org/fdroid/fdroid/UpdateService.java b/app/src/main/java/org/fdroid/fdroid/UpdateService.java index 5efe407d2..db0b49e1e 100644 --- a/app/src/main/java/org/fdroid/fdroid/UpdateService.java +++ b/app/src/main/java/org/fdroid/fdroid/UpdateService.java @@ -409,7 +409,7 @@ public class UpdateService extends IntentService { try { RepoUpdater updater = new IndexV1Updater(this, repo); //TODO setProgressListeners(updater); - if (!updater.update()) { + if (Preferences.get().isForceOldIndexEnabled() || !updater.update()) { updater = new RepoUpdater(getBaseContext(), repo); setProgressListeners(updater); updater.update(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32b0f2301..d846ca125 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,6 +18,8 @@ <string name="unstable_updates_summary">Suggest updates to unstable versions</string> <string name="keep_install_history">Keep install history</string> <string name="keep_install_history_summary">Store a log of all installs and uninstalls inside F-Droid</string> + <string name="force_old_index">Force old index format</string> + <string name="force_old_index_summary">In case there are bugs or compatibility issues, use the XML app index</string> <string name="other">Other</string> <string name="update_interval">Automatic update interval</string> diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 9ebaaf4c7..848eabfe2 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -111,6 +111,12 @@ android:summary="@string/keep_install_history_summary" android:defaultValue="false" android:dependency="expert" /> + <CheckBoxPreference + android:key="forceOldIndex" + android:title="@string/force_old_index" + android:summary="@string/force_old_index_summary" + android:defaultValue="false" + android:dependency="expert" /> <CheckBoxPreference android:title="@string/system_installer" android:defaultValue="false" android:key="privilegedInstaller"