Android-password-store: [BUG] Autofill broken below Android 11 due to missing InlinePresentationSpec

Created on 4 Nov 2020  路  6Comments  路  Source: android-password-store/Android-Password-Store

Process: dev.msfjarvis.aps, PID: 13810
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/widget/inline/InlinePresentationSpec;
        at com.zeapo.pwdstore.autofill.oreo.AutofillResponseBuilder.makeFillResponse(AutofillResponseBuilder.kt:28)
        at com.zeapo.pwdstore.autofill.oreo.OreoAutofillService.onFillRequest(OreoAutofillService.kt:87)
        at android.service.autofill.-$$Lambda$I0gCKFrBTO70VZfSZTq2fj-wyG8.accept(Unknown Source:8)
        at com.android.internal.util.function.pooled.PooledLambdaImpl.doInvoke(PooledLambdaImpl.java:300)
        at com.android.internal.util.function.pooled.PooledLambdaImpl.invoke(PooledLambdaImpl.java:195)
        at com.android.internal.util.function.pooled.OmniFunction.run(OmniFunction.java:86)
        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:7356)
        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:940)
Caused by: java.lang.ClassNotFoundException: android.widget.inline.InlinePresentationSpec
        ... 13 more

version 2.0.0-SNAPSHOT Free flavor

Most helpful comment

1.13.1 works fine

Yep, the regression is from the new inline presentation changes from #1181. It enables this to happen on Android 11, but the new APIs are missing on Android 10 and below so you see the crashes. I'm working on it right now.

All 6 comments

1.13.1 works fine

1.13.1 works fine

Yep, the regression is from the new inline presentation changes from #1181. It enables this to happen on Android 11, but the new APIs are missing on Android 10 and below so you see the crashes. I'm working on it right now.

1.13.1 works fine

Yep, the regression is from the new inline presentation changes from #1181. It enables this to happen on Android 11, but the new APIs are missing on Android 10 and below so you see the crashes. I'm working on it right now.

Maybe I'm naive, but I expected errors like this to be caught by the IDE. @msfjarvis Do you know what kind of usage of the new API is permitted outside API level checks? Function arguments with the type InlinePresentationSpec seemed fine, but maybe aren't...

1.13.1 works fine

Yep, the regression is from the new inline presentation changes from #1181. It enables this to happen on Android 11, but the new APIs are missing on Android 10 and below so you see the crashes. I'm working on it right now.

Maybe I'm naive, but I expected errors like this to be caught by the IDE.

I'd chalk it down to a Lint bug. I'll talk to someone from the Jetpack team and see if this can be fixed.

@msfjarvis Do you know what kind of usage of the new API is permitted outside API level checks? Function arguments with the type InlinePresentationSpec seemed fine, but maybe aren't...

The answer appears to be _none_. What I've done is moved all imeSpec-taking methods into a Api30AutofillResponseBuilder class and restored the previous versions in AutofillResponseBuilder, selectively calling these classes based on an API level check in OreoAutofillService. It's an insane amount of duplication, but fixes the problem. The commit is here, filing a PR now.

Snapshot will be up shortly, thanks for the report!

I confirm this is fixed in the current snapshot.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

crosser picture crosser  路  8Comments

glowinthedark picture glowinthedark  路  6Comments

sjug picture sjug  路  8Comments

gitwah picture gitwah  路  5Comments

zeapo picture zeapo  路  7Comments