Commit Graph

302 Commits

Author SHA1 Message Date
Aayush Gupta
418d464d14 Updater: Show update's version on AlertDialog and Notification
Currently at most of the places, build version is obtained from BuildInfoUtils.getBuildVersion()
method. This method obtains build version from the current running system's property.

However, in case there is a version bump on OTA, this logic results in wrong version
being shown to the user while updating/upgrading the system.

Get the version from the update itself to show the proper version in update notification
and pre-install warning.

Signed-off-by: Aayush Gupta <theimpulson@e.email>
Change-Id: Ia74085d8d7c067c408e7cfce1de90d49dcc68307
2022-05-23 11:20:45 +05:30
Michael Bestas
55a4e6eb97 Automatic translation import
Change-Id: I44333045e0168a795a1a1a0440c3df71f44c7c7c
2022-05-10 21:58:51 +03:00
Arian
16cb5c2f25 UpdateInstaller: Set file permissions on uncrypt ota package
-----

E RecoverySystemService: Failed to reserve space for compressed apex:
E RecoverySystemService: java.io.FileNotFoundException: /data/lineageos_updates/lineage-19.1-20220422-UNOFFICIAL-GMS-sagit.zip.uncrypt (Permission denied)
E RecoverySystemService: 	at java.util.zip.ZipFile.open(Native Method)
E RecoverySystemService: 	at java.util.zip.ZipFile.<init>(ZipFile.java:265)
E RecoverySystemService: 	at java.util.zip.ZipFile.<init>(ZipFile.java:187)
E RecoverySystemService: 	at java.util.zip.ZipFile.<init>(ZipFile.java:158)
E RecoverySystemService: 	at com.android.server.recoverysystem.RecoverySystemService.getCompressedApexInfoList(RecoverySystemService.java:921)
E RecoverySystemService: 	at com.android.server.recoverysystem.RecoverySystemService.allocateSpaceForUpdate(RecoverySystemService.java:972)
E RecoverySystemService: 	at android.os.IRecoverySystem$Stub.onTransact(IRecoverySystem.java:156)
E RecoverySystemService: 	at android.os.Binder.execTransactInternal(Binder.java:1179)
E RecoverySystemService: 	at android.os.Binder.execTransact(Binder.java:1143)
E UpdateInstaller: Could not install update
E UpdateInstaller: java.io.IOException: Failed to allocate space for update /data/lineageos_updates/lineage-19.1-20220422-UNOFFICIAL-GMS-sagit.zip.uncrypt
E UpdateInstaller: 	at android.os.RecoverySystem.installPackage(RecoverySystem.java:678)
E UpdateInstaller: 	at android.os.RecoverySystem.installPackage(RecoverySystem.java:596)
E UpdateInstaller: 	at org.lineageos.updater.controller.UpdateInstaller.installPackage(UpdateInstaller.java:100)
E UpdateInstaller: 	at org.lineageos.updater.controller.UpdateInstaller.access$400(UpdateInstaller.java:35)
E UpdateInstaller: 	at org.lineageos.updater.controller.UpdateInstaller$1.run(UpdateInstaller.java:144)
E UpdateInstaller: 	at java.lang.Thread.run(Thread.java:920)

Change-Id: I8250bf58709b92572cdffc8e5faca4bf243935aa
2022-04-23 14:46:28 +02:00
Asher Simonds
bbf2442ad4 Updater: Bring in the new icon
* Part of the new iconset made by Asher Simonds

Co-authored-by: Michael W <baddaemon87@gmail.com>
Change-Id: Iead4aaf8fce32418ad86ca58c03c7e86f1067d78
2022-04-06 23:14:45 +02:00
Michael Bestas
6fe0ac8682 Automatic translation import
Change-Id: I4c859e7e41fcbe1cc51fbb3b541e2f092a3d808b
2022-04-03 20:09:01 +03:00
Michael W
1ffe1a80ae Updater: Don't show thousands of days
* When pausing and resuming, the ETA calculation is off by a lot
  due to the time diff since the last calculation resulting in a
  big delta and therefore a very low speed
* By fixing this, we also need to set the last byte count to the total
  byte count there, otherwise the downloaded bytes since last calculation
  will be larger than in reality, resulting in too fast speeds calculated

Change-Id: Ica1053cc297ff59221ea2bc0014f20973a080c88
2022-03-07 14:08:16 +00:00
Michael W
9ad96eca85 Updater: Move progress next to progressbar
Author: Michael W <baddaemon87@gmail.com>
Date:   Fri Feb 11 18:16:02 2022 +0100

    Updater: Move progress next to progressbar

    * The progress text can get very long, resulting in jumping marquee text
    * In order to reduce the length, move the percentage out of the text
      and next to the progressbar
    * The behavior can be observed e.g. on pro1 in german, where the button
      is also wider due to the german text

    Change-Id: I0276182efed757c0929b31434edad9be548b841c

Author: Timi Rautamäki <timi.rautamaki@gmail.com>
Date:   Thu Mar 3 16:12:16 2022 +0000

    fixup! Updater: Move progress next to progressbar

    Fix crash on ATV devices by applying same layout changes to
    layout-large-notouch.

    Change-Id: Id6eabcf8b1960106eb63bd15bcf97f9b4cf0bbc8

Change-Id: I8aed4c35c6ac4261c0536a6b263d63f5b1fd11ba
2022-03-07 14:08:01 +00:00
Alexander Martinz
27f04e5b78 Updater: layout: activity_updates: add spacing between build info and last checked entry
Change-Id: Ie85fecb30ba12b056569049aac674dc1b8653942
Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
2022-02-10 20:53:39 +00:00
Alexander Martinz
75497ee48b Updater: Allow starting activities from background
-----

05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: FATAL EXCEPTION: main
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: Process: com.shiftos.updater, PID: 19707
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.shiftos.updater/org.lineageos.updater.controller.UpdaterService }: app is in background uid UidRecord{1463ce2 u0a63 TPSL bg:+47m50s26ms idle change:idle procs:1 seq(0,0,0)}
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1616)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.ContextImpl.startService(ContextImpl.java:1571)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.content.ContextWrapper.startService(ContextWrapper.java:669)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at org.lineageos.updater.UpdatesActivity.onStart(UpdatesActivity.java:181)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1433)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.Activity.performStart(Activity.java:7847)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3295)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2017)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:107)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:214)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7397)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
05-06 17:21:58.988 10063 19707 19707 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)

-----

Change-Id: Ibc2d471b028c1d4e824b3ede4bbc336d76801f88
Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
2022-02-10 20:53:39 +00:00
Joey
9edea6468c Updater: use consistent format for file sizes
Change-Id: I9a17cf2df69e2e39e90de169ca108511c71d4e31
Signed-off-by: Joey <joey@lineageos.org>
2022-02-10 20:53:39 +00:00
Michael W
d54176ccf7 Updater: Show toast when starting export
* It's not immediately clear that an export is started since the
  notification isn't intrusive
* Show a toast - that will be clear enough

Change-Id: I78d78b23884df3ddb37bc486c1d6012f899c888d
2022-02-10 20:53:39 +00:00
Michael W
f27d50d640 Updater: Switch to destination selector
* Let the user decide where to store the file
* That way it's not located in /storage/emulated/0/Android/data/...
  ...org.lineageos.updater/files/LineageOS updates/*.zip
  -> The user knows where the file is stored
  -> We don't have to care about WRITE_EXTERNAL_STORAGE etc
* Remove the cancel button - after closing the file stream we loose
  permission to access it, therefore can't delete it anymore
  -> Let the user handle deletion manually
* Since we don't use WRITE_EXTERNAL_STORAGE anymore, remove it from
  Manifest and also remove PermissionUtils (+calls) - we can now export
  immediately.
  -> This also solves the
  "TODO: start exporting once the permission has been granted"

Change-Id: I50afa403f2803569aa9def807ea20ee72c582284
2022-02-10 20:53:39 +00:00
Michael W
811d050272 Updater: No need to install every update
* Apparently users are not aware that they don't have to install every
  update we ever released (weeklies) after they have skipped some due
  to various reasons
* Since we are providing full installation packages, remind the user that
  it's ok to only ever choose the newest one

Change-Id: I70f9acd70344f36aaae7e45b848f6bcb7a8b3c0f
2022-02-10 20:53:39 +00:00
Michael W
d2557b8c6c Updater: We don't do upgrades
* We are actually updating, but especially between translations and
  non native speakers, drawing a semantical difference is more harmful
  than helpful
* Use "install" instead

Change-Id: Icdf1ce45d6cd35334b5c8ac13af3ec6741d837b6
2022-02-10 20:53:39 +00:00
Michael W
964eb5a68e Updater: The great cleanup
* Make final where possible
* Remove unused casts, imports, methods, enums and constructors
* Add null checks

Change-Id: Idd1a16426dd1928e2ed9922f5a35ba32ce4f808b
2022-02-10 20:53:39 +00:00
Michael W
297668b3ef Updater: update dependencies
Change-Id: I0686b28e7f6754c1b11b219b9036ea372032070b
2022-02-10 20:53:39 +00:00
Michael W
9f814a9a32 Updater: Replace lintOptions with lint
* As per AS recommendation

Change-Id: Id3668f21f356f13dcce4576c528b8af06d77a95f
2022-02-10 20:53:39 +00:00
Michael W
755254e1e5 Updater: Compile with and target Sdk version 31
Change-Id: I976d7af04d2d8f75ae0353341fe61a3a0510d840
2022-02-10 20:53:36 +00:00
Michael W
7843198d27 Updater: Change gradle from 3.5 to 7.1
Change-Id: Ia70512a77cdb30c6315863dcb65233d38cb5c9b9
2022-02-10 15:49:45 +01:00
Michael W
1f4d0571db Updater: Replace jcenter with mavenCentral
Change-Id: I0b6ae6553f106eef4cb7d331e3b089b74a66abcb
2022-02-10 09:37:49 +00:00
SahilSonar
4626490513 Updater: Convert to blueprint
Drop "UpdaterStudio" module while at it, considering that aidegen
can be used to compile Lineage Updater with Android Studio.

Change-Id: I828338461d0277992bfb301c2f785116c12dfc8a
2022-02-08 19:36:47 +01:00
Michael Bestas
7f584e9c08 Automatic translation import
Change-Id: I9aab887dd19308e821c5ba034563d0279abebb96
2022-01-12 15:46:57 +02:00
Michael Bestas
706e2d0498 Updater: Move to /system_ext
Change-Id: Ib781432398da8550eeb75b9d40dab191ce9f81c0
2021-11-14 21:34:25 +02:00
Timi Rautamäki
61e71f0db0 Updater: update layout and colors for 12
* Updated toolbar layout and behaviour
* Changed colors to match AOSP settings

Change-Id: Ic8efa69f9ba06055bac1772e1d9f3eb5ada67d8d
2021-11-08 20:03:11 +01:00
Timi Rautamäki
c8ae33d9ba Updater: Add a 3-dot menu for update item
Author: Timi Rautamaki <timi.rautamaki@gmail.com>
Date:   Wed Oct 13 16:06:51 2021 +0000
    Updater: add a 3-dot menu for update item

    A menu opening with only a long press is not intuitive and often not
    found by user.

    Change-Id: I7f819b77e2cbc534cafe488edadc4d3dd9b87d01

Author: Luca Stefani <luca.stefani.ge1@gmail.com>
Date:   Mon Nov 1 21:01:11 2021 +0100
    fixup! Updater: add a 3-dot menu for update item

    Change-Id: I10fe453c5f14d1a0ca49b734df517047cb7ee802

Change-Id: I8abf95327906bd6d3fb98978b931418f15d3dd00
2021-11-04 13:42:59 -04:00
Michael Bestas
ad604c69e4 Add exported flags in manifest
Targeting S+ (version 31 and above) requires that an explicit value
for android:exported be defined when intent filters are present

Change-Id: I2ce2b2cd1dcd69e343ae8577587483b19d825fdc
2021-10-11 22:36:41 +03:00
Michael Bestas
aed99e306c Updater: Add FLAG_IMMUTABLE flag to PendingIntent
Fixes:
Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE
or FLAG_MUTABLE be specified when creating a PendingIntent.

Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some
functionality depends on the PendingIntent being mutable,
e.g. if it needs to be used with inline replies or bubbles.

Change-Id: I63b25512d3bf6e0d3b0cc95d91295f4065175848
2021-10-11 22:36:40 +03:00
Michael Bestas
772843f3ce Add missing localbroadcastmanager dependency
Change-Id: I793f1c94fcbc6b7805558d35b6d35ee0696686df
2021-10-11 18:19:25 +03:00
Timi Rautamäki
81dc120f09 Updater: follow TwoPanelSettings styling
Change-Id: I8d0957288fca25f1584f5ddb35c994c7ac2575f7
2021-09-14 17:51:38 +00:00
Timi Rautamäki
a96d54f236 Updater: initial layout for TV
Change-Id: Ia4704f7a15d9c1179ec93c1cab28707ba8115e70
2021-09-14 17:51:36 +00:00
Michael Bestas
6e5bbdaae1 Automatic translation import
Change-Id: I2d7ce9569a264be7d739f96328948c45516ffa5c
2021-08-21 04:07:41 +03:00
LineageOS Builder
a5492459f9 Automatic translation import
Change-Id: Icf76cbc53dd4b000862d76f470f6ad737b96c829
2021-05-01 15:56:43 +00:00
Dhina17
a36be60f98 Updater: appbar: Set the collapsing animation duration to 0ms
- Fixes lately fading out title of the expanded bar when collapsing (parallax)

Change-Id: I86062153b84ca4f82649862e15baa30aba2e6995
2021-04-28 11:58:07 +05:30
Michael W
7cfeb81a45 Updater: Fix exporting updates
* getExternalStorageDirectory was deprecated in API level 29
* Use the proposed Context#getExternalFilesDirs(String) instead

The following message can be found in the logs, followed by a crash:
MediaProvider: Creating a non-default top level directory or
deleting an existing one is not allowed!

Fixes: https://gitlab.com/LineageOS/issues/android/-/issues/3358
Change-Id: I81412985abc0f64d0fccb0d3069ac57ef6b4ffef
2021-04-19 13:42:15 +02:00
Michael Bestas
5a9c7479e7 Automatic translation import
Change-Id: I13c96b381b0fcc17c127fe64c6fc7e3997b8f248
2021-02-28 02:41:28 +02:00
chrmhoffmann
29ca6e5f3f update push script: remove bashisms
* [[ and == are bash-only. /bin/sh does not necessarily default to bash

Change-Id: I2e47f514568fc8cc94f387c82a86bea141345ba5
2020-12-28 11:10:55 +01:00
Pavel Salomatov
ffe5b527f6 UpdatesDbHelper: Move identical code into helper method
Change-Id: I2e19d9756fab94d9fcd3352b0baef45300044d3a
2020-12-17 13:11:05 +01:00
Alessandro Astone
9689a6b8bb Updater: Retrieve recovery update setting using the prop itself
This makes it easier to share the setting with SetupWizard.

Change-Id: I9a69df99c1b9a198ef9d5a039a090721b0195064
2020-11-23 17:14:24 +01:00
Nolen Johnson
a3c6c19a5f Updater: Clarify explanation for why A/B can't disable recovery update
Change-Id: Ia8cd1ec8c1ed5b5c8c2b9761da6782d66d1f67cd
2020-11-14 07:28:51 +01:00
Bruno Martins
96626c2fde Updater: Add setting for updating recovery
When enabled, the recovery of the device will be updated with the
version of the installed system. This is only applicable to devices
with a dedicated recovery partition and not A/B.

Change-Id: I4c1701b09c000b4cdb044069fa9ba857500f9cb1
2020-11-12 16:47:30 +00:00
LuK1337
1f8b7d56b0 Updater: Sign with platform key
Change-Id: Ia54f30e697d82d522a8dbe8e157b8f9f9e15daa8
2020-09-29 12:28:27 +02:00
LineageOS Builder
e3b26100c5 Automatic translation import
Change-Id: I84df5f5257fc5ee97ad307d289f3f503100c4e70
2020-09-20 10:11:28 +00:00
LineageOS Builder
1de5ff5239 Automatic translation import
Change-Id: Ifdc568ca60c3c2892993296017cfbbe1341989ce
2020-09-11 11:11:55 +00:00
Michael Bestas
4f8f00148a Automatic translation import
Change-Id: If04e431e80d0d9cd7ca4753be5f9aeb454e1fd66
2020-05-23 18:21:58 +03:00
LuK1337
bb09c53d83 Updater: Use accent_device_default_{dark,light} for colorAccent values
* That way the accent color is synced with Settings.

Change-Id: I86473166c46f0c71ec6ae69decccb981f01c6a1d
2020-05-18 11:20:51 +02:00
Michael Bestas
618ecad81a Updater: Add privapp permissions xml
Change-Id: If1953e76859850359a63dc4a4ab50940d76fd59f
2020-05-06 20:48:18 +03:00
Michael Bestas
e944ca0661 Automatic translation import
Change-Id: I36e2f6bdc74c81f26c2fd281544a4f2b576bfb44
2020-04-23 16:50:00 +03:00
Luca Stefani
d1273f214e Only cancel notification if update isn't installed
* Even if the package is removed on A/B devices
  we still want to show the reboot notification

Change-Id: I980d36766a1427874b65b11674a8f0ae4ce1db88
2020-04-11 12:19:52 +02:00
Alexander Martinz
759d5510c8 UpdatesActivity: only set performance mode on A/B devices
If the preference dialog gets dismissed on a non-ab-device it still
tries to set performance mode.

Add a check to prevent that and only set performance mode on A/B devices.

Change-Id: I6290eb80550b4cfc8a012f94bdf228af7d4fc416
Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
2020-04-03 17:00:31 +02:00
Alexander Martinz
35abddd093 Updater: remove dialog before showing a new one and when detaching
2020-04-03 16:18:18.286 28742-28742/org.lineageos.updater E/WindowManager: android.view.WindowLeaked: Activity org.lineageos.updater.UpdatesActivity has leaked window DecorView@5dd12b3[UpdatesActivity] that was originally added here
        at android.view.ViewRootImpl.<init>(ViewRootImpl.java:621)
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:377)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:96)
        at android.app.Dialog.show(Dialog.java:342)
        at androidx.appcompat.app.AlertDialog$Builder.show(AlertDialog.java:1009)
        at org.lineageos.updater.UpdatesListAdapter.showInfoDialog(UpdatesListAdapter.java:552)
        at org.lineageos.updater.UpdatesListAdapter.lambda$setButtonAction$5$UpdatesListAdapter(UpdatesListAdapter.java:375)
        at org.lineageos.updater.-$$Lambda$UpdatesListAdapter$xtQzmsol8pO3BlYZkbKcb5gVAq4.onClick(Unknown Source:2)
        at org.lineageos.updater.UpdatesListAdapter.lambda$setButtonAction$9(UpdatesListAdapter.java:408)
        at org.lineageos.updater.-$$Lambda$UpdatesListAdapter$M4hRQyNgJseuHrw6EfkhK_yrGK8.onClick(Unknown Source:2)
        at android.view.View.performClick(View.java:7259)
        at android.view.View.performClickInternal(View.java:7236)
        at android.view.View.access$3600(View.java:801)
        at android.view.View$PerformClick.run(View.java:27896)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7397)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)

Change-Id: I7877b02b8526c7c12331a660a7ac934d02656e6f
Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
2020-04-03 16:41:16 +02:00