Skip to content

Startup crash on minified build types with AGP9 #511

@matejsemancik

Description

@matejsemancik

Braintree SDK Version

6.17.0

Environment

Both

Android Version & Device

All versions and devices

Braintree dependencies

com.braintreepayments.api:drop-in:6.17.0

Describe the bug

Minified variant of app which integrates latest version of drop-in SDK crashes on startup when built using Android Gradle Plugin 9.

java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: c8.m: java.lang.RuntimeException: Failed to create an instance of androidx.work.impl.WorkDatabase
	at android.app.ActivityThread.installProvider(ActivityThread.java:7493)
	at android.app.ActivityThread.installContentProviders(ActivityThread.java:6999)
	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6770)
	at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2134)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loopOnce(Looper.java:201)
	at android.os.Looper.loop(Looper.java:288)
	at android.app.ActivityThread.main(ActivityThread.java:7898)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
Caused by: c8.m: java.lang.RuntimeException: Failed to create an instance of androidx.work.impl.WorkDatabase
	at d4.a.b(SourceFile:96)
	at d4.a.a(SourceFile:82)
	at androidx.startup.InitializationProvider.onCreate(SourceFile:51)
	at android.content.ContentProvider.attachInfo(ContentProvider.java:2451)
	at android.content.ContentProvider.attachInfo(ContentProvider.java:2421)
	at android.app.ActivityThread.installProvider(ActivityThread.java:7488)
	at android.app.ActivityThread.installContentProviders(ActivityThread.java:6999) 
	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6770) 
	at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) 
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2134) 
	at android.os.Handler.dispatchMessage(Handler.java:106) 
	at android.os.Looper.loopOnce(Looper.java:201) 
	at android.os.Looper.loop(Looper.java:288) 
	at android.app.ActivityThread.main(ActivityThread.java:7898) 
	at java.lang.reflect.Method.invoke(Native Method) 
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 
Caused by: java.lang.RuntimeException: Failed to create an instance of androidx.work.impl.WorkDatabase
	at v3.i.b(SourceFile:606)
	at k4.m.<init>(SourceFile:200)
	at androidx.work.WorkManagerInitializer.b(SourceFile:121)
	at d4.a.b(SourceFile:82)
	at d4.a.a(SourceFile:82) 
	at androidx.startup.InitializationProvider.onCreate(SourceFile:51) 
	at android.content.ContentProvider.attachInfo(ContentProvider.java:2451) 
	at android.content.ContentProvider.attachInfo(ContentProvider.java:2421) 
	at android.app.ActivityThread.installProvider(ActivityThread.java:7488) 
	at android.app.ActivityThread.installContentProviders(ActivityThread.java:6999) 
	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6770) 
	at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) 
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2134) 
	at android.os.Handler.dispatchMessage(Handler.java:106) 
	at android.os.Looper.loopOnce(Looper.java:201) 
	at android.os.Looper.loop(Looper.java:288) 
	at android.app.ActivityThread.main(ActivityThread.java:7898) 
	at java.lang.reflect.Method.invoke(Native Method) 
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 

Disabling androidx.startup.InitializationProvider inside Manifest reveals issues with creation of analytics Room database

<provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="${applicationId}.androidx-startup"
    tools:node="remove" />
java.lang.RuntimeException: Unable to start activity ComponentInfo{dev.matsem.braintreerepro/dev.matsem.braintreerepro.MainActivity}: java.lang.RuntimeException: Failed to create an instance of com.braintreepayments.api.AnalyticsDatabase
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3676)
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3813)
	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2308)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loopOnce(Looper.java:201)
	at android.os.Looper.loop(Looper.java:288)
	at android.app.ActivityThread.main(ActivityThread.java:7898)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
Caused by: java.lang.RuntimeException: Failed to create an instance of com.braintreepayments.api.AnalyticsDatabase
	at h1.i.a(SourceFile:700)
	at a2.t0.<init>(SourceFile:161)
	at dev.matsem.braintreerepro.MainActivity.onCreate(SourceFile:23)
	at android.app.Activity.performCreate(Activity.java:8290)
	at android.app.Activity.performCreate(Activity.java:8269)
	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1384)
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3657)
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3813) 
	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101) 
	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2308) 
	at android.os.Handler.dispatchMessage(Handler.java:106) 
	at android.os.Looper.loopOnce(Looper.java:201) 
	at android.os.Looper.loop(Looper.java:288) 
	at android.app.ActivityThread.main(ActivityThread.java:7898) 
	at java.lang.reflect.Method.invoke(Native Method) 
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 

To reproduce

  1. Clone https://github.com/matejsemancik/repro-braintree
  2. Install release variant of app
  3. Observe crash

Expected behavior

App does not crash at startup or at any time during initialisation of any SDK components when built using AGP9

Screenshots

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions