From 92f8678b3d2da18ad93bac6af0ae83984cf74714 Mon Sep 17 00:00:00 2001 From: Nico Alt Date: Thu, 30 Jul 2015 13:06:53 +0200 Subject: [PATCH 001/102] Prompt for beta updates Fixes #313 --- F-Droid/res/values/strings.xml | 2 ++ F-Droid/res/xml/preferences.xml | 5 +++++ F-Droid/src/org/fdroid/fdroid/FDroidApp.java | 8 ++++++++ .../src/org/fdroid/fdroid/Preferences.java | 19 +++++++++++++++++++ .../org/fdroid/fdroid/data/AppProvider.java | 4 +++- 5 files changed, 37 insertions(+), 1 deletion(-) diff --git a/F-Droid/res/values/strings.xml b/F-Droid/res/values/strings.xml index 8fae272f7..07cb85d56 100644 --- a/F-Droid/res/values/strings.xml +++ b/F-Droid/res/values/strings.xml @@ -13,6 +13,8 @@ App cache Keep downloaded .apk files on device Updates + Get updates newer than suggested version + Beta updates Other Last repo scan: %s never diff --git a/F-Droid/res/xml/preferences.xml b/F-Droid/res/xml/preferences.xml index 0de38fb22..839c0d41a 100644 --- a/F-Droid/res/xml/preferences.xml +++ b/F-Droid/res/xml/preferences.xml @@ -78,6 +78,11 @@ + diff --git a/F-Droid/src/org/fdroid/fdroid/FDroidApp.java b/F-Droid/src/org/fdroid/fdroid/FDroidApp.java index 53848a639..03a1a66ff 100644 --- a/F-Droid/src/org/fdroid/fdroid/FDroidApp.java +++ b/F-Droid/src/org/fdroid/fdroid/FDroidApp.java @@ -182,6 +182,14 @@ public class FDroidApp extends Application { } }); + final Context context = this; + Preferences.get().registerBetaUpdatesChangeListener(new Preferences.ChangeListener() { + @Override + public void onPreferenceChange() { + AppProvider.Helper.calcDetailsFromIndex(context); + } + }); + // Clear cached apk files. We used to just remove them after they'd // been installed, but this causes problems for proprietary gapps // users since the introduction of verification (on pre-4.2 Android), diff --git a/F-Droid/src/org/fdroid/fdroid/Preferences.java b/F-Droid/src/org/fdroid/fdroid/Preferences.java index 61816b1b6..ede945a97 100644 --- a/F-Droid/src/org/fdroid/fdroid/Preferences.java +++ b/F-Droid/src/org/fdroid/fdroid/Preferences.java @@ -47,6 +47,7 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi public static final String PREF_COMPACT_LAYOUT = "compactlayout"; public static final String PREF_IGN_TOUCH = "ignoreTouchscreen"; public static final String PREF_CACHE_APK = "cacheDownloaded"; + public static final String PREF_BETA_UPDATES = "betaUpdates"; public static final String PREF_EXPERT = "expert"; public static final String PREF_UPD_LAST = "lastUpdateCheck"; public static final String PREF_SYSTEM_INSTALLER = "systemInstaller"; @@ -68,6 +69,7 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi private static final boolean DEFAULT_SYSTEM_INSTALLER = false; private static final boolean DEFAULT_LOCAL_REPO_BONJOUR = true; private static final boolean DEFAULT_CACHE_APK = false; + private static final boolean DEFAULT_BETA_UPDATES = false; private static final boolean DEFAULT_LOCAL_REPO_HTTPS = false; private static final boolean DEFAULT_INCOMP_VER = false; private static final boolean DEFAULT_EXPERT = false; @@ -90,6 +92,7 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi private final List localRepoBonjourListeners = new ArrayList<>(); private final List localRepoNameListeners = new ArrayList<>(); private final List localRepoHttpsListeners = new ArrayList<>(); + private final List betaUpdatesListeners = new ArrayList<>(); private boolean isInitialized(String key) { return initialized.containsKey(key) && initialized.get(key); @@ -135,6 +138,10 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi return preferences.getBoolean(PREF_CACHE_APK, DEFAULT_CACHE_APK); } + public boolean getBetaUpdates() { + return preferences.getBoolean(PREF_BETA_UPDATES, DEFAULT_BETA_UPDATES); + } + public boolean showIncompatibleVersions() { return preferences.getBoolean(PREF_INCOMP_VER, DEFAULT_INCOMP_VER); } @@ -241,6 +248,14 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi filterAppsRequiringRootListeners.remove(listener); } + public void registerBetaUpdatesChangeListener(ChangeListener listener) { + betaUpdatesListeners.add(listener); + } + + public void unregisterBetaUpdatesChangeListener(ChangeListener listener) { + betaUpdatesListeners.remove(listener); + } + @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (BuildConfig.DEBUG) { @@ -278,6 +293,10 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi for (ChangeListener listener : localRepoHttpsListeners) { listener.onPreferenceChange(); } + case PREF_BETA_UPDATES: + for (ChangeListener listener : betaUpdatesListeners) { + listener.onPreferenceChange(); + } break; } } diff --git a/F-Droid/src/org/fdroid/fdroid/data/AppProvider.java b/F-Droid/src/org/fdroid/fdroid/data/AppProvider.java index 7c223e3b5..27d2251ac 100644 --- a/F-Droid/src/org/fdroid/fdroid/data/AppProvider.java +++ b/F-Droid/src/org/fdroid/fdroid/data/AppProvider.java @@ -833,6 +833,8 @@ public class AppProvider extends FDroidProvider { final String apk = DBHelper.TABLE_APK; final String app = DBHelper.TABLE_APP; + final boolean betaUpdates = Preferences.get().getBetaUpdates(); + String restrictToStable = betaUpdates ? "" : ( apk + ".vercode <= " + app + ".upstreamVercode AND " ); String updateSql = "UPDATE " + app + " SET suggestedVercode = ( " + @@ -840,7 +842,7 @@ public class AppProvider extends FDroidProvider { " FROM " + apk + " WHERE " + app + ".id = " + apk + ".id AND " + - apk + ".vercode <= " + app + ".upstreamVercode AND " + + restrictToStable + " ( " + app + ".compatible = 0 OR " + apk + ".compatible = 1 ) ) " + " WHERE upstreamVercode > 0 "; From e3140573ac02f741ca3ee4a70ecabc68fcb7477b Mon Sep 17 00:00:00 2001 From: xinxin Date: Sat, 8 Aug 2015 19:04:16 -0700 Subject: [PATCH 002/102] Add timeout for Http request --- F-Droid/src/org/fdroid/fdroid/net/HttpDownloader.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/F-Droid/src/org/fdroid/fdroid/net/HttpDownloader.java b/F-Droid/src/org/fdroid/fdroid/net/HttpDownloader.java index c1a6a3650..f769e389d 100644 --- a/F-Droid/src/org/fdroid/fdroid/net/HttpDownloader.java +++ b/F-Droid/src/org/fdroid/fdroid/net/HttpDownloader.java @@ -83,6 +83,8 @@ public class HttpDownloader extends Downloader { } else { connection = (HttpURLConnection) sourceUrl.openConnection(); } + connection.setConnectTimeout(10000); + connection.setReadTimeout(40000); } protected void doDownload() throws IOException, InterruptedException { From 853d7ed0472ce61f3182b213f35edb7f3f361e53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Fri, 24 Jul 2015 10:35:47 -0700 Subject: [PATCH 003/102] Bump compileSdkVersion --- F-Droid/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/F-Droid/build.gradle b/F-Droid/build.gradle index 5f6240f5a..477c88a29 100644 --- a/F-Droid/build.gradle +++ b/F-Droid/build.gradle @@ -125,7 +125,7 @@ task binaryDeps(type: Copy, dependsOn: ':F-Droid:prepareReleaseDependencies') { } android { - compileSdkVersion 21 + compileSdkVersion 22 buildToolsVersion '22.0.1' sourceSets { From 8bd6e5606513c49bac7976b9019fea30c7943f79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Fri, 24 Jul 2015 10:35:51 -0700 Subject: [PATCH 004/102] Bump support libraries to 22.2.1 --- F-Droid/build.gradle | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/F-Droid/build.gradle b/F-Droid/build.gradle index 477c88a29..db0ba534b 100644 --- a/F-Droid/build.gradle +++ b/F-Droid/build.gradle @@ -16,9 +16,9 @@ if ( !hasProperty( 'sourceDeps' ) ) { dependencies { - compile 'com.android.support:support-v4:22.1.0', - 'com.android.support:appcompat-v7:22.1.0', - 'com.android.support:support-annotations:22.1.0', + compile 'com.android.support:support-v4:22.2.1', + 'com.android.support:appcompat-v7:22.2.1', + 'com.android.support:support-annotations:22.2.1', 'org.thoughtcrime.ssl.pinning:AndroidPinning:1.0.0', 'com.nostra13.universalimageloader:universal-image-loader:1.9.4', @@ -80,9 +80,9 @@ if ( !hasProperty( 'sourceDeps' ) ) { // then you can find the relevant portions of the ../build.gradle file that // include magic required to make it work at around about the v0.78 git tag. // They have since been removed to clean up the build file. - compile 'com.android.support:support-v4:22.1.0', - 'com.android.support:appcompat-v7:22.1.0', - 'com.android.support:support-annotations:22.1.0' + compile 'com.android.support:support-v4:22.2.1', + 'com.android.support:appcompat-v7:22.2.1', + 'com.android.support:support-annotations:22.2.1' androidTestCompile 'commons-io:commons-io:2.2' } From 56ff9d13536177205afc4b139be06a2ed2ca5fc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Fri, 7 Aug 2015 23:59:46 -0700 Subject: [PATCH 005/102] Re-add lightWithDarkActionBar enum item (fixes #340) Added it in the same position as it was originally. --- F-Droid/src/org/fdroid/fdroid/FDroidApp.java | 1 + 1 file changed, 1 insertion(+) diff --git a/F-Droid/src/org/fdroid/fdroid/FDroidApp.java b/F-Droid/src/org/fdroid/fdroid/FDroidApp.java index c1c10b429..a3625d417 100644 --- a/F-Droid/src/org/fdroid/fdroid/FDroidApp.java +++ b/F-Droid/src/org/fdroid/fdroid/FDroidApp.java @@ -86,6 +86,7 @@ public class FDroidApp extends Application { public enum Theme { dark, light, + lightWithDarkActionBar, // Obsolete } private static Theme curTheme = Theme.light; From d20ef027453959cf45798c9ff7c07433643cc63d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Sat, 8 Aug 2015 00:02:38 -0700 Subject: [PATCH 006/102] Re-add superuser permission to manifest (fixes #339) --- F-Droid/AndroidManifest.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/F-Droid/AndroidManifest.xml b/F-Droid/AndroidManifest.xml index 87f6c2e8d..b89c64e86 100644 --- a/F-Droid/AndroidManifest.xml +++ b/F-Droid/AndroidManifest.xml @@ -55,6 +55,11 @@ + + + Date: Sat, 8 Aug 2015 00:06:41 -0700 Subject: [PATCH 007/102] Don't prompt users to install into system until it's stable Right now there are multiple issues - #294, #346, #347, #348 - so telling people to go through the process at startup should not happen yet. --- .../fdroid/installer/InstallIntoSystemDialogActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/F-Droid/src/org/fdroid/fdroid/installer/InstallIntoSystemDialogActivity.java b/F-Droid/src/org/fdroid/fdroid/installer/InstallIntoSystemDialogActivity.java index ded1cabb3..8fe2b102c 100644 --- a/F-Droid/src/org/fdroid/fdroid/installer/InstallIntoSystemDialogActivity.java +++ b/F-Droid/src/org/fdroid/fdroid/installer/InstallIntoSystemDialogActivity.java @@ -107,7 +107,9 @@ public class InstallIntoSystemDialogActivity extends FragmentActivity { protected void onPostExecute(Boolean probablyRoot) { super.onPostExecute(probablyRoot); - if (probablyRoot) { + // TODO: remove false condition once the install into system + // process is stable - #294, #346, #347, #348 + if (false && probablyRoot) { // looks like we have root, at least su has a version number and is present Intent installIntent = new Intent(context, InstallIntoSystemDialogActivity.class); From 31dad85da6c5894ef69faa9763b91bedfabbd148 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Sun, 9 Aug 2015 12:14:39 -0700 Subject: [PATCH 008/102] Forgot to bump targetSdkVersion with compileSdkVersion --- F-Droid/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/F-Droid/AndroidManifest.xml b/F-Droid/AndroidManifest.xml index b89c64e86..a88ce2cf4 100644 --- a/F-Droid/AndroidManifest.xml +++ b/F-Droid/AndroidManifest.xml @@ -10,7 +10,7 @@ Date: Sun, 9 Aug 2015 12:15:06 -0700 Subject: [PATCH 009/102] Bump to 0.96-alpha1 --- F-Droid/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/F-Droid/AndroidManifest.xml b/F-Droid/AndroidManifest.xml index a88ce2cf4..5aff4594d 100644 --- a/F-Droid/AndroidManifest.xml +++ b/F-Droid/AndroidManifest.xml @@ -3,8 +3,8 @@ xmlns:tools="http://schemas.android.com/tools" package="org.fdroid.fdroid" android:installLocation="auto" - android:versionCode="95050" - android:versionName="0.95" + android:versionCode="96001" + android:versionName="0.96-alpha1" > Date: Sun, 9 Aug 2015 18:39:20 -0700 Subject: [PATCH 010/102] Hide all apk download progress views equally Two views weren't hidden by default, so they were taking up space before they were needed. The java code already takes care of showing them when necessary. --- F-Droid/res/layout/app_details_header.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/F-Droid/res/layout/app_details_header.xml b/F-Droid/res/layout/app_details_header.xml index 99f2cb936..d3b23cd73 100644 --- a/F-Droid/res/layout/app_details_header.xml +++ b/F-Droid/res/layout/app_details_header.xml @@ -133,6 +133,7 @@ android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_below="@id/progress_bar" + android:visibility="gone" android:textSize="12sp"/> Date: Sun, 9 Aug 2015 19:09:02 -0700 Subject: [PATCH 011/102] Reorganize buildTypes gradle config * disable minify (proguard) on all build types * explicitly disable resource shrinking on all build types --- F-Droid/build.gradle | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/F-Droid/build.gradle b/F-Droid/build.gradle index db0ba534b..33f30738b 100644 --- a/F-Droid/build.gradle +++ b/F-Droid/build.gradle @@ -152,13 +152,12 @@ android { } buildTypes { - release { + all { minifyEnabled false + shrinkResources false // requires minify (proguard) } - buildTypes { - debug { - debuggable true - } + debug { + debuggable true } } From e43355ce5660a8441f34da23f0c8e6c3d11aa82e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Sun, 9 Aug 2015 21:33:36 -0700 Subject: [PATCH 012/102] Limit lint output to HTML --- F-Droid/build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/F-Droid/build.gradle b/F-Droid/build.gradle index 33f30738b..870157a37 100644 --- a/F-Droid/build.gradle +++ b/F-Droid/build.gradle @@ -173,6 +173,10 @@ android { checkReleaseBuilds false abortOnError false + htmlReport true + xmlReport false + textReport false + // Our translations are crowd-sourced disable 'MissingTranslation' } From 1d47956bcfe1ae3c0a8865a6eb40e45b1c3ca5be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Sun, 9 Aug 2015 21:44:01 -0700 Subject: [PATCH 013/102] Run fix-ellipsis --- F-Droid/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/F-Droid/res/values/strings.xml b/F-Droid/res/values/strings.xml index a748eb0e2..ab9111cab 100644 --- a/F-Droid/res/values/strings.xml +++ b/F-Droid/res/values/strings.xml @@ -375,7 +375,7 @@ NEW: Provided by %1$s. - Downloading... + Downloading… B From a4fe44437a8a6b03df42059fa9c42588b5ef2a8d Mon Sep 17 00:00:00 2001 From: Miku Nyan Date: Mon, 10 Aug 2015 21:44:20 +0300 Subject: [PATCH 014/102] fix #361 --- .../res/layout-v11/app_permission_item.xml | 50 +++++++++++++++++++ F-Droid/res/layout/app_permission_item.xml | 6 +-- .../installer/AppSecurityPermissions.java | 24 ++++++--- 3 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 F-Droid/res/layout-v11/app_permission_item.xml diff --git a/F-Droid/res/layout-v11/app_permission_item.xml b/F-Droid/res/layout-v11/app_permission_item.xml new file mode 100644 index 000000000..b5aab370d --- /dev/null +++ b/F-Droid/res/layout-v11/app_permission_item.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + diff --git a/F-Droid/res/layout/app_permission_item.xml b/F-Droid/res/layout/app_permission_item.xml index b5aab370d..4d555c216 100644 --- a/F-Droid/res/layout/app_permission_item.xml +++ b/F-Droid/res/layout/app_permission_item.xml @@ -22,8 +22,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal" - android:background="?android:attr/selectableItemBackground"> + android:orientation="horizontal"> + android:layout_height="match_parent" /> = 17 && (perm.flags & PermissionInfo.FLAG_COSTS_MONEY) != 0 ? R.layout.app_permission_item_money : R.layout.app_permission_item, null); @@ -434,7 +445,8 @@ public class AppSecurityPermissions { // Dangerous and normal permissions are always shown to the user if the permission // is required, or it was previously granted - if ((isNormal || isDangerous) && (isRequired || wasGranted || isGranted)) { + if ((isNormal || isDangerous) && (isRequired || wasGranted || isGranted || + Build.VERSION.SDK_INT < 16)) { return true; } @@ -452,11 +464,11 @@ public class AppSecurityPermissions { PermissionGroupInfoComparator() { } public final int compare(MyPermissionGroupInfo a, MyPermissionGroupInfo b) { - if (((a.flags^b.flags)&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { - return ((a.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) ? -1 : 1; + if (((a.flags()^b.flags())&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { + return ((a.flags()&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) ? -1 : 1; } - if (a.priority != b.priority) { - return a.priority > b.priority ? -1 : 1; + if (a.priority() != b.priority()) { + return a.priority() > b.priority() ? -1 : 1; } return sCollator.compare(a.mLabel, b.mLabel); } @@ -497,7 +509,7 @@ public class AppSecurityPermissions { if (pInfo.mNew) { addPermToList(group.mNewPermissions, pInfo); } - if ((group.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { + if ((group.flags()&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) { addPermToList(group.mPersonalPermissions, pInfo); } else { addPermToList(group.mDevicePermissions, pInfo); From 05f2a76bc469242a95e4c6f85112c821b1c42ff7 Mon Sep 17 00:00:00 2001 From: Miku Nyan Date: Sun, 9 Aug 2015 02:56:21 +0300 Subject: [PATCH 015/102] fixed privileged installer crash on Android < 3.0 --- F-Droid/res/layout-v11/install_confirm.xml | 149 +++++++++++++++++++++ F-Droid/res/layout/install_confirm.xml | 1 - 2 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 F-Droid/res/layout-v11/install_confirm.xml diff --git a/F-Droid/res/layout-v11/install_confirm.xml b/F-Droid/res/layout-v11/install_confirm.xml new file mode 100644 index 000000000..911e8d944 --- /dev/null +++ b/F-Droid/res/layout-v11/install_confirm.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +