5250 Commits

Author SHA1 Message Date
Hans-Christoph Steiner
e6fb837af0 use JobSchedule to better schedule CleanCacheService
#588
 #1426
2018-04-24 21:09:41 +02:00
Hans-Christoph Steiner
34ac465438 convert ConnectivityMonitorService to JobIntentService #1426 2018-04-24 21:09:41 +02:00
Hans-Christoph Steiner
07ada4e6b2 switch UpdateService to a JobIntentService
closes #1426
2018-04-24 21:09:36 +02:00
Hans-Christoph Steiner
fe260d931c use JobIntentService for CleanCache, DeleteCache, Installer, InstalledApp
This should ensure that these jobs complete before sleep, and also, they
should work more reliably with the new Android 8.0 background restrictions.
https://developer.android.com/reference/android/support/v4/app/JobIntentService.html #1426
2018-04-24 21:05:43 +02:00
Hans-Christoph Steiner
3785aecc26 UpdateService: use data URI rather than custom extra
Just proper Android style.
2018-04-24 21:05:43 +02:00
Hans-Christoph Steiner
94e5519d23 migrate "Only on Wifi" preference to "Over Wi-Fi" and "Over data"
This migrates the old "Only on Wifi" checkbox to something similar with the
new preferences layout.
2018-04-24 20:03:55 +02:00
Hans-Christoph Steiner
9c7d97a379 reschedule UpdateService based on data/wifi/interval preference changes
JobScheduler also take network type into account.

#1381
2018-04-24 20:03:55 +02:00
Hans-Christoph Steiner
5946d198b0 specify network type to JobScheduler based on new wifi/data prefs
#1381
2018-04-24 20:03:54 +02:00
Hans-Christoph Steiner
f8225f3122 update "Only on WiFi" pref to handle very low bandwidth better
This gives a lot more flexibility to the user to cover bandwidth, power,
and privacy issues related to network traffic.  The current implementation
does not represent these prefs as well as it should.  For example, it does
not force the traffic over the preferred network type if the other type is
set to "never".  Instead it just tracks the "unmetered" status of the
active network, and acts based on that.

closes #1381
2018-04-24 20:03:54 +02:00
Hans-Christoph Steiner
ce934d3846 change all Settings from CheckBox to Switch, except "expert"
This follows the Material preferred style using Switches instead of
CheckBoxes for boolean preferences.  This leaves the "expert" preferences
as CheckBoxes to differentiate them, and make them stand out as something
different.
2018-04-24 20:03:54 +02:00
Hans-Christoph Steiner
d0d0c1d62c standardize capitalization in Settings based on Material
https://material.io/guidelines/patterns/settings.html
2018-04-24 20:03:54 +02:00
Hans-Christoph Steiner
801d1693a7 convert "Update Interval" preference to a SeekBar 2018-04-24 20:03:51 +02:00
Hans-Christoph Steiner
f15c85146d fix lint warnings in PreferencesFragment 2018-04-24 18:07:38 +02:00
Hans-Christoph Steiner
50bce42940 switch to com.android.support:preference-v14 for Material themes 2018-04-24 18:07:38 +02:00
Hans-Christoph Steiner
c04a867b9b format preferences.xml with Android Studio Ctrl-Alt-L 2018-04-24 18:02:38 +02:00
Hans-Christoph Steiner
40635c36e5 rename Preferences constants to be readable, Java style 2018-04-24 18:02:38 +02:00
Hans-Christoph Steiner
16d15a358d include signer fingerprint in Apk instance created from a file 2018-04-24 18:02:38 +02:00
Hans-Christoph Steiner
ba2f1e1919 document AppListActivity 2018-04-24 18:02:38 +02:00
Hans-Christoph Steiner
4ff4f8056f Merge branch 'remove-gradle-witness' into 'master'
update to Gradle Android Plugin v3.0 semantics, remove gradle-witness

See merge request fdroid/fdroidclient!604
2018-04-24 16:01:07 +00:00
Hans-Christoph Steiner
b3bd4ff2f7 stop forcing Java 1.7, it is the oldest supported version now
This was introduced in 2014:
2f9c3b805675f02653a433637b33188b61f90c1e
2018-04-23 12:57:27 +02:00
Hans-Christoph Steiner
40fdccf262 purge gradle-witness until it is compatible with 'implementation'
https://github.com/signalapp/gradle-witness/issues/27
2018-04-23 12:57:18 +02:00
Hans-Christoph Steiner
518537f23a purge broken Javadoc generation that is very out of date
Introduced in 2014 to keep ant compatibility:
b3107eb6b249c9b1d595b32ea177f60b6040c709
2018-04-23 12:33:24 +02:00
Hans-Christoph Steiner
96e10d7bf1 migrate dependencies to new Gradle Android Plugin 3.0 terms
Fixes this warning:

WARNING: Configuration 'compile' is obsolete and has been replaced with
'implementation' and 'api'.  It will be removed at the end of 2018. For
more information see:
http://d.android.com/r/tools/update-dependency-configurations.html

https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html
2018-04-23 12:33:22 +02:00
Hans-Christoph Steiner
9f839bcca7 purge obsolete block in settings.gradle
missed this in dd169069823720a57d04a53b7e317e67cf55cf55
fdroid/fdroidclient!676
2018-04-23 12:31:28 +02:00
Hans-Christoph Steiner
b15fff082e force disk space calc to Long on < android-18
closes #1424
2018-04-23 11:46:31 +02:00
Hans-Christoph Steiner
8903a089ba Merge branch 'minSdkVersion-to-android14' into 'master'
The Great Upgrade to minSdkVersion 14!

Closes #1379, #1383, and #248

See merge request fdroid/fdroidclient!676
2018-04-23 08:16:46 +00:00
Hans-Christoph Steiner
71f7762521 remove unused NFC-ish <intent-filter> with lint error
Looks like an aborted effort to do:
https://developer.android.com/guide/topics/connectivity/nfc/nfc.html#mime
2018-04-19 16:36:35 +02:00
Hans-Christoph Steiner
15b0736252 new lint is more aggressive about erroring on upper case URI schemes 2018-04-19 16:29:53 +02:00
Hans-Christoph Steiner
7b679ef57c new version of lint is more aggressive at announcing UnusedResources
These are in fact needed:

  /export/share/code/fdroid/client/app/src/main/res/values/dimens.xml:25: Error: The resource R.dimen.fixed_width_padding appears to be unused [UnusedResources]
      <dimen name="fixed_width_padding">2dp</dimen>
             ~~~~~~~~~~~~~~~~~~~~~~~~~~
  /export/share/code/fdroid/client/app/src/main/res/values/styles.xml:162: Error: The resource R.style.SwapTheme_StartSwap appears to be unused [UnusedResources]
      <style name="SwapTheme.StartSwap" parent="AppThemeLight">
             ~~~~~~~~~~~~~~~~~~~~~~~~~~
  /export/share/code/fdroid/client/app/src/main/res/values/styles.xml:166: Error: The resource R.style.SwapTheme_StartSwap_Text appears to be unused [UnusedResources]
      <style name="SwapTheme.StartSwap.Text" parent="@style/SwapTheme.StartSwap">
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2018-04-19 16:27:41 +02:00
Hans-Christoph Steiner
898c731fcc don't run checkstyle or pmd on zipsigner, the format is too different
If someone wants to clean this up, feel free...
2018-04-19 16:19:21 +02:00
Hans-Christoph Steiner
4e4dd2385b reformat all zipsigner code with Android Studio Ctrl-Alt-L 2018-04-19 16:18:24 +02:00
Hans-Christoph Steiner
a3d9850a42 update to latest robolectric 3.8 and mockito 2.7.22
http://robolectric.org/getting-started/#building-with-gradle
2018-04-19 15:51:44 +02:00
Hans-Christoph Steiner
14474aed01 reenable line length errors on ProperMultiRepoUpdaterTest 2018-04-19 15:51:44 +02:00
Hans-Christoph Steiner
e00fe0dcda switch to latest official BottomNavigation release
#1379
2018-04-19 15:51:44 +02:00
Hans-Christoph Steiner
5c6c54cadf switch from spongycastle to latest official bouncycastle
#1379
2018-04-19 15:51:44 +02:00
Greg Leach
dd2f43dcde Make sure to close streams when done with them.
488f8cd3b4

closes #1383
2018-04-19 15:51:44 +02:00
Hans-Christoph Steiner
dd16906982 move zipsigner into this app, its not maintained anywhere else 2018-04-19 15:51:44 +02:00
Hans-Christoph Steiner
a2597ae3e8 switch to official nanohttpd releases
closes #248
2018-04-19 15:51:44 +02:00
Hans-Christoph Steiner
404796a9fa switch to official support PreferenceFragment
#1379
2018-04-19 15:51:44 +02:00
Hans-Christoph Steiner
dfc6524fc1 switch Robolectric to use compile SDK version 2018-04-19 15:51:44 +02:00
Hans-Christoph Steiner
2a9c3fee5b purge all code blocks for < android-14, except installer stuff
The installer stuff should hopefully become a standalone library, so that
might as well keep the old support in place.

#1379
2018-04-19 15:51:44 +02:00
Hans-Christoph Steiner
e923427232 gitlab-ci: convert connected10 job to connected14
#1379
2018-04-19 15:51:44 +02:00
Hans-Christoph Steiner
6fbdd1210e update to the latest version of the Android support libraries
This requires bumping compile and built-tools verisons.
2018-04-19 15:51:43 +02:00
Hans-Christoph Steiner
3a2c10f077 update to latest Gradle Android Plugin (3.1.1) and gradle (4.4.1)
#1379
2018-04-19 15:51:43 +02:00
Hans-Christoph Steiner
5ec9789e73 switch minSdkVersion to 14 (Android 4.0)
#1379
2018-04-19 11:28:27 +02:00
Hans-Christoph Steiner
38a3ccda17 Merge branch 'update-scheduling' into 'master'
modernize update scheduling

See merge request fdroid/fdroidclient!416
2018-04-18 22:04:55 +00:00
Hans-Christoph Steiner
9e0de9ac69 rudimentary support for JobScheduler to run updates
The new JobScheduler API can opportunitistically run a job based on whether
there is good internet, connected to power, etc.  This is very useful for
running updates.  Ideally, updates would always happen in the background
while on unmetered internet and connected to power.

#588
2018-04-18 23:07:36 +02:00
Hans-Christoph Steiner
e36d7719b3 trigger an update after joining good wifi without JobSchedule
Each time the device connects to a wifi network, this waits for 2 minutes,
then if the wifi is still connected, it re-schedules the index update to
happen now.  The goal is to favor unmetered networks as much as possible
when downloading the index and any automatic app updates.

This is only needed on older platforms, JobScheduler handles this for us on
android-21+
2018-04-18 23:07:36 +02:00
Hans-Christoph Steiner
7d9f5e880c move update scheduling entirely to AlarmManager
This changes the flow of the update triggering so that any Intent sent to
UpdateService can potentially trigger an update, depending only on the
state of the internet and the "Only on WiFi" preference.  Instead of having
a timer that checks every hour to see if it is time to run the update, just
let AlarmManager send a trigger Intent based on the timing in the
"Update Interval" setting.

The update schedule is reset each time F-Droid restarts, and also each time
the user returns from the settings, so if AlarmManager fails us in the time
being, the updates will be rescheduled next time F-Droid is restarted, the
device is rebooted, etc.

refs #662
2018-04-18 22:04:52 +02:00
Hans-Christoph Steiner
5f3e952958 move "Update Interval" pref handling to Preferences class
Basically all of the settings are handled in the Preferences class now,
this was an outlier.
2018-04-18 21:56:14 +02:00