iterable-android-sdk
iterable-android-sdk copied to clipboard
Started Seeing Crashes after upgrading to 3.4.10
Started seeing these crashes after upgrading to iterable SDK to the 3.4.10. Both are thrown when initialising the IterableAPI component. it affects about 0.03% of users that updated to the new version (the version with updated SDK was released on December 1st)
first one
~11 users,
~28 total crashes
mostly Galaxy S22 and Galaxy S22 Ultra devices, and few Pixel 6/7

Caused by com.google.crypto.tink.shaded.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).
at com.google.crypto.tink.shaded.protobuf.GeneratedMessageLite.parsePartialFrom(GeneratedMessageLite.java:1566)
at com.google.crypto.tink.shaded.protobuf.GeneratedMessageLite.parseFrom(GeneratedMessageLite.java:1664)
at com.google.crypto.tink.proto.Keyset.parseFrom(Keyset.java:957)
at com.google.crypto.tink.integration.android.SharedPrefKeysetReader.read(SharedPrefKeysetReader.java:84)
at com.google.crypto.tink.CleartextKeysetHandle.read(CleartextKeysetHandle.java:58)
at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.read(AndroidKeysetManager.java:328)
at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.readOrGenerateNewKeyset(AndroidKeysetManager.java:287)
at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.build(AndroidKeysetManager.java:238)
at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:123)
at com.iterable.iterableapi.IterableKeychain.<init>(IterableKeychain.kt:20)
at com.iterable.iterableapi.IterableApi.getKeychain(IterableApi.java:138)
at com.iterable.iterableapi.IterableApi.migrateAuthDataFromSharedPrefsToKeychain(IterableApi.java:392)
at com.iterable.iterableapi.IterableApi.updateSDKVersion(IterableApi.java:380)
at com.iterable.iterableapi.IterableApi.initialize(IterableApi.java:556)
at app.dogo.com.dogo_android.di.AppModuleKt$appModule$1$47.invoke(appModule.kt:233)
at app.dogo.com.dogo_android.di.AppModuleKt$appModule$1$47.invoke(appModule.kt:229)
at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:54)
at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:51)
at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:20)
at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:51)
at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:111)
at org.koin.core.scope.Scope.resolveValue(Scope.kt:255)
at org.koin.core.scope.Scope.resolveInstance(Scope.kt:242)
at org.koin.core.scope.Scope.get(Scope.kt:205)
at org.koin.core.scope.Scope.get$default(Scope.java:131)
at app.dogo.com.dogo_android.service.App.onCreate(App.kt:150)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1211)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7588)
at android.app.ActivityThread.access$1700(ActivityThread.java:315)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2286)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8751)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Second ~2 users, ~10 total crashes all in the background
Caused by java.security.KeyStoreException: the master key android-keystore://_androidx_security_master_key_ exists but is unusable
at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.readOrGenerateNewMasterKey(AndroidKeysetManager.java:275)
at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.build(AndroidKeysetManager.java:236)
at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:123)
at com.iterable.iterableapi.IterableKeychain.<init>(IterableKeychain.kt:20)
at com.iterable.iterableapi.IterableApi.getKeychain(IterableApi.java:138)
at com.iterable.iterableapi.IterableApi.migrateAuthDataFromSharedPrefsToKeychain(IterableApi.java:392)
at com.iterable.iterableapi.IterableApi.updateSDKVersion(IterableApi.java:380)
at com.iterable.iterableapi.IterableApi.initialize(IterableApi.java:556)
at app.dogo.com.dogo_android.di.AppModuleKt$appModule$1$47.invoke(appModule.kt:233)
at app.dogo.com.dogo_android.di.AppModuleKt$appModule$1$47.invoke(appModule.kt:229)
at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:54)
at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:51)
at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:20)
at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:51)
at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:111)
at org.koin.core.scope.Scope.resolveValue(Scope.kt:255)
at org.koin.core.scope.Scope.resolveInstance(Scope.kt:242)
at org.koin.core.scope.Scope.get(Scope.kt:205)
at org.koin.core.scope.Scope.get$default(Scope.java:131)
at app.dogo.com.dogo_android.service.App.onCreate(App.kt:150)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5579)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1671)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6327)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
Thanks for reporting this issue @AurimasSikorskas! Will have it looked soon.
Any specifics/settings with these devices or profiles? Did all Pixel 6/7 and Samsung 22s had problems or just few of them? Please update if you get any pointers to repro the scenario.
hey @Ayyanchira ,
So we were not able to reproduce it on any of our devices, and none of the affected devices had their user ids tracked so can't get more info about them.
And I just noticed that while most crashes had empty logs in crash analytics, few of them had a single os_update event.
it's an auto-tracked firebase analytics event, it's tracked when the device operating system is updated to a new version.
Seeing same issue in S21-5G/ Google Pixel4. Once you clear app cache it works without any issue(not a fix). Common pattern of crash observed is in Android13
Thank you for reporting the crashes. We have updated the 3.4.10 release tag with warning. We're investigating the issue. In the meantime, please test thoroughly. If you see crashes, revert to version 3.4.9
Sounds like this was fixed in release 3.4.11 https://github.com/Iterable/iterable-android-sdk/releases/tag/3.4.11
To work around a known Android issue that can cause crashes when creating EncryptedSharedPreferences, we've upgraded androidx.security.crypto from version 1.0.0 to 1.1.0-alpha04. When EncryptedSharedPreferences cannot be created, the SDK now uses SharedPreferences (unencrypted).
Yes, can validate it, we updated our app a few months back to the latest version, and we haven't seen any crashes.