-
Notifications
You must be signed in to change notification settings - Fork 121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Why the app maintains support below API < 24 #190
Comments
Well, good question. I would really love to update ZXing to the latest version - but I think nobody would notice any difference right now. While there have been many minor bug fixes since 3.3.3 and even new features like reading multiple barcodes in one image, there's nothing you could really feel in Binary Eye. So increasing the minSDK now would only exclude users and no one would benefit. Of course, it's inevitable to update at some point. But if I would do that now, I would loose a potential quarter of my users for no good reason. There are still a lot of older devices out there. It seems that F-Droid in particular is popular on those devices, and I don't see why I should exclude someone because they can't afford (or don't want) a newer device. From a developer perspective, I can understand your argument. Updating the minSDK would certainly make things easier and it also would make ZXing more stable. And we could finally migrate to the AndroidX libraries. But from a user's perspective, that would just be rude, I think. A possible solution would be to distribute two versions of the app: one with the minSDK as it is (for older devices) and one with a raised minSDK and all the possible updates (for newer devices). This can actually be done with Google Play by always publishing two updates in that order. This way, older devices would get the latest update for their OS while newer devices would get the latest built. On the other hand this would mean I would have to maintain two branches. |
I guess you shouldn't split your application into two separate branches because your time is very important and you can do many things for opensource or take a walk for health. Of course, it is your choice, you spend the most time on this project. ;) It would be good if the co-authors of the project or simply users commented on this topic. |
I have an app that also uses ZXing (Catima) and the reason they dropped support for versions of Android below 7 is for a single line of code, see zxing/zxing#1170. I would personally much rather see someone maintain a version of ZXing that lets us use all improvements without having to drop everything before Android 7 because of a single line of code that can be replaced by something else that works the same, but I'm talking just about myself here. No clue how @markusfisch feels about this. |
Exactly the same. The only argument ZXing's maintainer had was that the app in his Repo doesn't target anything before Android 7 anymore. For a library provider, I think this argument is frighteningly short-sighted and self-centred. Personally, I see value in supporting older devices and software for as long as possible. At least as long as it's not too much of a burden on the current generation. I see no value in excluding people for the convenience of developers. |
I noticed a new entry in the zxing FAQ: https://github.com/zxing/zxing/wiki/Frequently-Asked-Questions#it-doesnt-work-with-java-7--no-interface-method-sortljavautilcomparator So I did some research and tested with an Android emulator running Android 4.4.2 and... good news, it is possible for us to upgrade to a new zxing version without dropping support for old Android versions. Here are the changes I made for Catima, I hope this information can help Binary Eye too: CatimaLoyalty/Android@cbcf1bc |
Very good news! Thank you for your information. |
All things being equal, compatibility is a feature. Is there anything in newer versions of ZXing that would be worth leaving many Android users behind? (Of course, as @TheLastProject pointed out, it's possible to recompile the library into something that will run on older Android versions, so the original point is kind-of moot, but I felt it was still worth pointing out the problem with this kind of request.)
There is a bunch of issues with this:
|
@TheLastProject Thanks a lot for the tip! 👍 That really seems like a good way to update ZXing and keep the minSDK version. Will definitely try this! @nbraud Yes, that's what I am thinking too. I don't want to leave anyone behind. |
A very small note to say thank you for this project and the outstanding backwards-compatibility! Also I think that you should totally mention the compatibility in your (already excellent!) feature list. The http url send can be really handy. Also remarkable the F-Droid distribution channel 👍. Quite some devices I have from early 2010 are totally functional and still rocking and useful with apps like yours! My 🎩 to you sir! |
Thanks a lot! Always good to get feedback like this! 😄 |
Hello, I noticed that the application uses the SDK com.google.zxing:core in version 3.3.3.
According to the comment, this is due to compatibility with Android devices below Android 7.0 (August 2016).
Version 3.3.3 of ZXing is released in 2018.
3 years there is no update to the main module in the application anymore.
Based on this article, approximately 75% of users are running Android 7 or later.
https://www.xda-developers.com/android-version-distribution-statistics-android-studio/amp/
Perhaps it would be worth rethinking and checking (if possible) how many binary eye users currently use Android below Android 7. If it is below 5%, it would be worth rethinking. Wouldn't a better solution be a better app with less support for flawed Android versions.
Source:
https://mvnrepository.com/artifact/com.google.zxing/core
https://www.xda-developers.com/android-version-distribution-statistics-android-studio/amp/
https://github.com/markusfisch/BinaryEye/blob/792be87283b5af8f82479e9d2285ecae1e13553f/app/build.gradle
The text was updated successfully, but these errors were encountered: