View Issue Details

IDProjectCategoryView StatusLast Update
0006608Talerwallet (Android App)public2020-10-11 20:58
ReporterFlorian Dold Assigned Togrote  
PriorityhighSeveritytweakReproducibilityhave not tried
Status assignedResolutionopen 
Product Versiongit (master) 
Target Version0.8.1 
Summary0006608: make wallet work on Android 21+
Description>> According to the git commit history, the minimum Android version got
>> bumped in March, because the QR code scanner package was changed a
>> different one that requires Android 7.0+ (AFAIK to get around some
>> limitation of the current one).
>
> Ugh. Can we do something conditional, like use one package for ancient
> Android and the other one for 7.0+? What was the limitation anyway?

It wasn't actually a library swap, but just upgrading the same QR scanner library (zxing-android-embedded) to a new major version. A direct dependency this lib (ZXing core, the underlying QR / bar code image processing library) requires Java8+ since 2019. That explains the minSdkVersion bump to 24.

As a quick fix, we can downgrade. But IIRC, the old version had limitations regarding the device orientation (it would always present the reader in landscape mode). According to the change logs, scanning accuracy was also improved in the current zxing release.

Interestingly, since only April 2020 (!), the Android SDK supports "desugaring" Java 8 class files, so they can also run on older Androids, including 21.

Torsten should investigate if we can use this to make ZXing run even on 21+. (You *can* override the API level requirement, but of course that doesn't guarantee that it will actually work.)

So we have three options:
(a) downgrade zxing-android-embedded, making UX worse
(b) *only* downgrade zxing-core (might work according to documentation of zxing-android-embedded, but explicitly not supported)
(c) try to use the latest Android SDK feature of desugaring to make the latest versions of zxing-android-embedded work in 21+
TagsNo tags attached.

Activities

grote

2020-09-24 14:50

developer   ~0016979

Option (c) has been implemented, but needs to be tested to ensure it really works on lower API versions.

Issue History

Date Modified Username Field Change
2020-09-16 11:24 Florian Dold New Issue
2020-09-16 11:24 Florian Dold Status new => assigned
2020-09-16 11:24 Florian Dold Assigned To => grote
2020-09-24 14:50 grote Note Added: 0016979
2020-10-03 12:35 Christian Grothoff Product Version => git (master)
2020-10-03 12:35 Christian Grothoff Target Version 0.8 => 0.8.1
2020-10-11 20:58 Christian Grothoff Severity minor => tweak