ankidroid / Anki-Android

AnkiDroid: Anki flashcards on Android. Your secret trick to achieve superhuman information retention.
GNU General Public License v3.0
8.68k stars 2.24k forks source link

V2.13: Answer buttons not appearing in Reviewer #7369

Closed benjaminor closed 3 years ago

benjaminor commented 4 years ago
Reproduction Steps
  1. Select deck to review
  2. Question page is nearly blank (only note and "show answer" button)
  3. Right answer page is also blank

See pictures: Screenshot_20201008-142047_AnkiDroid Screenshot_20201008-142059_AnkiDroid

Expected Result

Question and answer page should be as usual, with the buttons there.

Debug info

AnkiDroid Version = 2.13.5

Android Version = 8.0.0

ACRA UUID = 80fce863-4876-45bc-9e26-1b657faa1f28

Scheduler = std

Research

Enter an [x] character to confirm the points below:

AR-999 commented 3 years ago

After quite several updates the bug still remains and has made the app almost useless... V2.14.3

mikehardy commented 3 years ago

@AR-999 indeed! Do you have a PR for the layout issue above? I haven't had time personally to look at it yet though it's on my high priority list. Until you or someone proposes a PR, the issue will remain yes

mikey-boy commented 3 years ago

@AR-999 You can always do the fix above by clearing the application data in your android settings.

It seems that when the app is in a working condition and the bug first appears, a System message pops up and complains about Webview. If someone encounters that message and posts it here it may be helpful in debugging (my phone is in Spanish so I missed most of what it said..)

jbuschtoens commented 3 years ago

There is no popup in my case. The bug appears after the first restart of the application - clear app data- open anki- I see a welcome screen and can review as normal- I close anki and open it again- the top bar during reviews is missing etc

mikehardy commented 3 years ago

@jbuschtoens thank you for your reproduction steps! If anyone else has reproduction steps that will help me (or anyone else that might have time to work on it) see this myself (I have not yet personally reproduced it...) that will help. As an aside in our crash report we should probably report the webview in use and it's version, I think recent webview updates for the Chrome subsystem are why this is showing up now but I'm not 100%, and regardless we don't have the version info that would tell us.

jbuschtoens commented 3 years ago

I made a recording: https://drive.google.com/file/d/1q5vNy3SLYh4xXIDvWjwB6yoqL7oDO8PD/view?usp=drivesdk

AR-999 commented 3 years ago

l

You mean problem report sir?

AnkiDroid Version = 2.14.3

Android Version = 8.0.0

ACRA UUID = 33fb8934-1ddf-495f-8ee0-1a8a75127bb8

Scheduler = std

Crash Reports Enabled = true

mikehardy commented 3 years ago

I just scanned all related reports in the play store. From what I can tell they are all Android 8 or 8.1. @AR-999 does that match your experience?

There was a report above (with an unfinished binary search on versions between 2.13alph13 and 2.13.3) from @hiacre)

You can try parallel releases to test other versions side by side:

We know this version works: https://github.com/ankidroid/Anki-Android/releases/v2.12.1 We think this version works: https://github.com/ankidroid/Anki-Android/releases/v2.13alpha13 We are not sure on the rest of the 2.13.x series

mikehardy commented 3 years ago

CALL FOR TESTERS

I have a possible fix up now as PR #8144

If anyone affected could install and test a parallel release built from 2.14.3 with nothing but that PR added in, I would love to know if it fixes the issue:

https://github.com/mikehardy/Anki-Android/releases/tag/v2.14.3-issue7369

If I get successful feedback I can merge it and release a 2.14.4 that fixes this for everyone! If I get failure feedback I'll know to try something different

Thanks in advance

@mikey-boy if you're still around, I still cannot reproduce this (I still can't :disappointed: ) here is the change though if you are interested in trying things:

            <include layout="@layout/reviewer_answer_buttons"
                android:layout_alignParentBottom="true"
                android:translationZ="1dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />

I can't set the width to "something less than the screen width" as that introduces a fixed width I believe, based on your screen size. But I'm open to any ideas if you can come up with a non-fixed-width solution that works for you

jbuschtoens commented 3 years ago

Unfortunately this version is no different for me. I still have the exact same issues.

binarin commented 3 years ago

It fixed it for my phone. The version from play store is reproducibly broken, but AnkiDroid-issue7369.parallel.A.apk works for the same card (but I didn't test for a long time).

mikehardy commented 3 years ago

@jbuschtoens thanks for trying, I am sorry it did not work for you. May I ask if you cleared data/cache prior? And you are certain that after installing the parallel build you actually used the parallel build (the version should show up at bottom of settings / advanced. Just to make 100% sure this is a real failure case with the code we think we are running, I do not have high hopes though.

@binarin I am happy it worked for you! But of course now I am puzzled why it worked for one person but not the other, unfortunately it is that sort of issue. Please do keep using it and see if it comes back.

Given the conflicting reports, I would love if anyone else had a look

jbuschtoens commented 3 years ago

It says "Ankidroid.A" at the top, so I'm sure I'm using the correct version. I did try deleting the app data for both Ankidroid and Ankidroid.A, but the problem remains. No problems on first start, display problems after first restart of the app.

mikehardy commented 3 years ago

Okay, thank you @jbuschtoens - I just watched your video very closely, and I notice that the top bar flickers but I do not see the bottom answer buttons go away. The change I made was very very specific - I changed only the answer buttons layout. I wonder if you will have answer buttons work now, but still see problems with any/all other elements? Or do you already reproduce problems with the answer buttons, using my parallel test build for this issue? I really appreciate the testing by the way, thank you

jbuschtoens commented 3 years ago

I also sometimes have the answer buttons disappear (with both versions). I can't find any clear pattern on when the answer buttons disappear or not.On 3/6/21, 22:00 Mike Hardy notifications@github.com wrote:

Okay, thank you @jbuschtoens - I just watched your video very closely, and I notice that the top bar flickers but I do not see the bottom answer buttons go away. The change I made was very very specific - I changed only the answer buttons layout. I wonder if you will have answer buttons work now, but still see problems with any/all other elements? Or do you already reproduce problems with the answer buttons, using my parallel test build for this issue? I really appreciate the testing by the way, thank you —You are receiving this because you were mentioned.Reply to this email directly, view it on GitHub, or unsubscribe.

jbuschtoens commented 3 years ago

I haven't really studied with Anki in months, so I tried downgrading the Anki version. Unfortunately I can reproduce the bug with 2.12.1, 2.12.0, 2.11.3 and 2.10.4.Given that the problems started for me in January this year, I would think the problem is either some data that Ankidroid left that I didn't sufficiently clean up, or an OS update.

mikehardy commented 3 years ago

It is definitely something about the Chrome WebView, but I would like to handle it. Ironic you say "OS" update because Android official release is on 11 now, but this only seems to affect users with Android 8 and Android 8.1, so if it was an OS update, it's still quite behind the times ;-). Upgrading the phone operating system above 8 should also fix it as I have no reports on play store reviews or for any other versions. That's one of the things making it so hard to fix!

mikehardy commented 3 years ago

This actually makes me think: I wonder if it still happens if you do either of:

I don't know if it will affect things or not, I just know that I still can't reproduce it locally, so I'm brainstorming anything / everything.

jbuschtoens commented 3 years ago

Maybe this would be a good moment to mention that I have Firefox for Android installed and set as my default browser.I don't know how to uninstall those Chrome/Webview updates.

mikehardy commented 3 years ago

That is very interesting - I think my next step here is add some more diagnostics to the installation information area so I can capture what the WebView vendor/version in use is

mikehardy commented 3 years ago

Collaborated with someone via google play store review comments this morning and same report as @jbuschtoens - does not appear to fix the issue for them (or to be precise: works after first start of parallel version, fails after reopening - works again if clear data, fails after reopening). So, I'm marking this mentally as "failed fix" and will keep after it with time available.

mikehardy commented 3 years ago

If you open the android settings about this device and tap the build number 8 times (or so) you get a new developer settings menu inside android settings

If you do this, you can see what webview is currently running. I tried (and failed, again) to reproduce this on Android 8.0 with Chrome WebView 88.0.4324.181 which I think is up to date. I'm going to try to find an easier way to get this data from people but it would be interesting to see what Android + WebView version people that can reproduce this are using.

Fairly large tangent: if we are having repeated rendering problems (and we are...) we might be able to use the Firefox rendering engine like so https://wiki.mozilla.org/Mobile/GeckoView as an embed so we have control over it.

jbuschtoens commented 3 years ago

I have Chrome 88.0.4324.181

sirhand commented 3 years ago

I'm having the same disappearing button problem. Thanks for your efforts to fix. I checked my WebView it's Android System WebView 89.0.4389.86

sirhand commented 3 years ago

I switched to Chrome 88.0.4324.181, same problem. Android 8.0. Samsung S7 edge. I use Firefox and had Chrome disabled up until a moment ago. First launch always works fine. Once it's closed and opened again it breaks.

sirhand commented 3 years ago

The behavior is different for my different decks! For some it works perfectly fine. "Japanese V2K - Visual Novel, Anime, Manga" doesn't work. "Kana (Hirigana)" works fine.

mikehardy commented 3 years ago

@sirhand do you also see strange flickering if you open the changelog ? Unfortunately I think that only triggers on version upgrades of stable versions so it's not really easy to trigger it - you'd have to e.g. install 2.14.3-parallel.A maybe then 2.14.3-parallel.B from our releases settings to see it unless you had a debug version installed (then it shows up in settings as a thing you can trigger, for testing)

sirhand commented 3 years ago

How do I open the changelog? Right now I have it installed from the play store. I have uninstalled and reinstalled a few versions trying to fix. Should I install the parallels? I'm happy to help any way I can.

mikehardy commented 3 years ago

the parallels allow you to be in control of versions outside of the play store release cycle, so when testing things they are the best way to go I think. I do recommend (for testing!) using a different collection and/or making sure your real collection is backed up well - if you touch your collection with 2.15-alpha builds you likely will not be able to use 2.14 again. Now, 2.15 is working pretty well (I use it daily, we have hundreds of alpha testers) so this is not a disaster, but might be unexpected.

If you install 2.14.3-parallel.A and run it, then install 2.14.5-parallel.A it should trigger the changelog. I'm curious if you see a flicker like one of the other reporters here. It's a much simpler layout but could reproduce the problem, and right now reproduction is the key: I can't reproduce this, so I'm stuck. I'm looking for any reproduction avenue

jbuschtoens commented 3 years ago

Different person here, but I updated 2.10.4 to 2.14.5 and the blue top bar flickered when I scroll in the change log. However, I kept the change log open, switched apps, switched back to ankidroid, and now there is no flickering.

david-allison commented 3 years ago

Following on from #8153: Reports of this happening in 2.14.5 on Android 10: https://www.reddit.com/r/Anki/comments/m1ciep/ankidroid_2145_does_not_show_cards/

Needs confirmation that this is the same issue.

mikehardy commented 3 years ago

CALL FOR TESTERS - Please install one of the parallel builds from this new test build and report back: https://github.com/mikehardy/Anki-Android/releases/tag/v2.14.5-issue7369-2

@david-allison-1 I think my first attempt led to that regression ("cards rendering totally white"). It has been reverted

New hunch (as explained in that release) is that this is a hardware render incompatibility that just cropped up due to some system or webview change on android 8, which would explain why we're only seeing this on real devices (and I can't reproduce it because I have no Android 8 physical devices + emulator uses software render). New test is to set all the reviewer views to software render as one rather blunt way to fix it. If the test build works I can try to get more surgical with what is software vs hardware render, and what Android versions go software as needed.

Thanks in advance for all feedback. We know this is a big deal, I'm giving it a best effort but without being able to reproduce it personally, it's very hard to fix.

https://stackoverflow.com/questions/18448862/android-text-disappears-frequently-in-webview-when-layer-type-software-is-set https://stackoverflow.com/questions/26325725/how-to-use-layertype-value-being-set-differently-inside-the-resources https://stackoverflow.com/questions/57465334/android-webview-with-layer-type-software-not-showing-html5-canvas-content https://developer.android.com/guide/topics/graphics/hardware-accel#controlling

jbuschtoens commented 3 years ago

I've noticed that in my case the android UI (both the status bar at the top and the on screen buttons for back, home, task switch) also disappears. Also, when I open workflowy (a different app), the android UI flickers while the app is loading.

jbuschtoens commented 3 years ago

https://github.com/mikehardy/Anki-Android/releases/tag/v2.14.5-issue7369-2This fixes the issue in my case. Yay.

mikehardy commented 3 years ago

@jbuschtoens your testing help here has been absolutely critical, I really appreciate it. I'm relieved to hear I may have found a viable workaround. I have one more test build up that now takes my "stab in the dark" test2 and focuses it to only Android 8/8.1.

https://github.com/mikehardy/Anki-Android/releases/tag/v2.14.5-issue7369-3

if this build works for you I will be releasing it as 2.14.6 immediately because 2.14.5 inadvertently broke other users while trying to fix this and we have lots of people unable to review right now :scream:

jbuschtoens commented 3 years ago

https://github.com/mikehardy/Anki-Android/releases/tag/v2.14.5-issue7369-3This version also works.

mikehardy commented 3 years ago

Wonderful! It's not perfect and it is a little bold to move this quickly but I'm releasing 2.14.6 with this now to fix broken reviewers in general on 2.14.5 and hopefully fix all the Android 8 people assuming it works for them as well. If not, I'll keep trying. Thanks again for the testing

Anyone else that has time to test: I still want to hear more confirmations if possible to know it is working, all help appreciated.

josemlucero commented 3 years ago

New versión working ok for me

terryneal2 commented 3 years ago

Hi all - I installed 2.14.6 and it is working for now.

On Tue, Mar 9, 2021, 9:27 PM josemlucero, notifications@github.com wrote:

New versión working ok for me

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ankidroid/Anki-Android/issues/7369#issuecomment-794904883, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARKLXRMEC7VBXNGPOEACUKTTC37KNANCNFSM4SIV5L2A .

terrywallwork commented 3 years ago

Got 2.14.6 works correctly :) on Android 8 tablet.

mikehardy commented 3 years ago

Oh my goodness, this is such a relief. I'm sure it is a relief for everyone here as well! Who would have thought that some vendors would break hardware rendering (only testable on real devices!) for Android 8/8.1 only? That's kind of amazing. I'm really glad it's fixed, that was one of the more difficult issues I've worked on here. Thanks everyone for collaborating here.

Happy reviewing!