Closed saurabhdtu closed 7 years ago
@saurabhdtu We are sorry that you are getting this issue. It looks like a parcel exception. Basically Branch is trying to read a values from your intent extras and some how your intent has an object added to it which fails to parcel. Can you pleas help us to diagnose more into this issue with the following
Thanks. I'll look into this and get back to you
@saurabhdtu Did you get a chance to check this issue? We have release v2.12.0 which has a safety catch for the crash issue (Even though this is not caused by Branch SDK)
@sojanpr, this crash occurs after release v2.12.0.
Caused by java.lang.RuntimeException: Parcel android.os.Parcel@3d8551c: Unmarshalling unknown type code 4784212 at offset 3900
at android.os.Parcel.readValue(Parcel.java:2340)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2614)
at android.os.BaseBundle.unparcel(BaseBundle.java:221)
at android.os.BaseBundle.getBoolean(BaseBundle.java:659)
at android.content.Intent.getBooleanExtra(Intent.java:6049)
at io.branch.referral.Branch.checkIntentForSessionRestart(Branch.java:2446)
at io.branch.referral.Branch.access$1000(Branch.java:71)
at io.branch.referral.Branch$BranchActivityLifeCycleObserver.onActivityResumed(Branch.java:2380)
at android.app.Application.dispatchActivityResumed(Application.java:238)
at android.app.Activity.onResume(Activity.java:1372)
at android.support.v4.app.FragmentActivity.onResume(FragmentActivity.java:485)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1286)
at android.app.Activity.performResume(Activity.java:6987)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4144)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4245)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1838)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Hi @giperwlad -- Thanks for letting us know. How are you reproducing the crash? Please provide steps. Also, are you putting any extra parcelable class with your intent? If so can you please check the parcel read and write methods so that your reading and writing order and data type is the same? Are your intents being modified by other SDKs, when providing steps let us know what's in your build.gradle file.
Hi @giperwlad -- I expanded the safety of our try catch to cover your scenario in this branch: https://github.com/BranchMetrics/android-branch-deep-linking/tree/Unmarshalling-fix - if you could test with it since we don't know how to reproduce the error, that would be great! We'll be running this through QA and shipping it this week.
Hi @EvangelosG. I'm not putting parcelable classes with intent. I can not reproduce this crash. I received crash report with Fabric (http://crashes.to/s/b8a231bd95c). I will try to reproduce this crash.
Thanks very much.
My gradle dependencies:
//ORM, DATABASE
compile project(':ActiveAndroid')
compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1'
//SUPPORT
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.android.support:multidex:1.0.1'
compile 'com.google.android.gms:play-services-location:10.2.4'
//FABRIC
compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true;
}
// FLURRY
compile 'com.flurry.android:analytics:6.3.1'
//ANNOTATIONS
compile 'com.intellij:annotations:12.0'
//NETWORKING
compile 'com.squareup.okhttp3:logging-interceptor:3.8.1'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
compile 'com.squareup.okhttp3:okhttp:3.8.1'
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
//FACEBOOK
compile 'com.facebook.android:facebook-android-sdk:4.25.0'
//FCM
compile 'com.google.firebase:firebase-core:10.2.4'
compile 'com.google.firebase:firebase-messaging:10.2.4'
//RX
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.2'
//EVENT BUS
compile 'org.greenrobot:eventbus:3.0.0'
//UI
compile 'com.github.devlight:infinitecycleviewpager:1.0.2'
compile 'com.merhold.extensiblepageindicator:extensiblepageindicator:1.0.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.daimajia.androidanimations:library:2.2@aar'
compile 'com.nightonke:jellytogglebutton:1.0.2'
compile('com.afollestad.material-dialogs:core:0.9.4.5') {
exclude group: 'com.android.support'
}
//INTERCOM
compile 'io.intercom.android:intercom-sdk-base:3.2.3'
compile 'io.intercom.android:intercom-sdk-fcm:3.2.1'
//STRIPE
compile 'com.stripe:stripe-android:2.0.0'
//MAPBOX
compile('com.mapbox.mapboxsdk:mapbox-android-sdk:5.1.2@aar') {
transitive = true }
compile 'com.mapbox.mapboxsdk:mapbox-android-plugin-locationlayer:0.2.0-SNAPSHOT'
//SECURE PREFERENCES
compile 'com.scottyab:secure-preferences-lib:0.1.4'
compile('com.madgag.spongycastle:core:1.54.0.0')
compile('com.madgag.spongycastle:prov:1.54.0.0')
//FONTS
compile 'uk.co.chrisjenx:calligraphy:2.3.0'
Hi @giperwlad -- thanks for the gradle file. We've seen before that FB creates this intent issue. I wrote a safer try/catch to handle it. Thanks for your patience, I'll post here once we publish. In the meantime if you want to ship sooner you can build with this branch: https://github.com/BranchMetrics/android-branch-deep-linking/tree/Unmarshalling-fix
Is it possible to build this branch (Unmarshalling-fix) using gradle? or Do I have to clone and compile the code as a module in my project? Should I compile this compile('io.branch.sdk.android:library:2.12.0') { exclude module: 'answers-shim' }
???? Will this work?
Getting a different crash now. io.branch.referral.Branch.checkIntentForSessionRestart nq -> Its minified name for my class, which has is never passed on the Splash Screen in the intent Is some class/member getting minified in the branch sdk ?
Fatal Exception: java.lang.RuntimeException: Unable to resume activity {com.app/com.app.ui.activities.SplashActivity}: java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = nq$m) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2986) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697) Caused by java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = nq$m) at android.os.Parcel.readSerializable(Parcel.java:2384) at android.os.Parcel.readValue(Parcel.java:2203) at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.getBoolean(BaseBundle.java:658) at android.content.Intent.getBooleanExtra(Intent.java:4927) at io.branch.referral.Branch.checkIntentForSessionRestart(SourceFile:2440) at io.branch.referral.Branch.access$100(SourceFile:70) at io.branch.referral.Branch$BranchActivityLifeCycleObserver.onActivityResumed(SourceFile:2380) at android.app.Application.dispatchActivityResumed(Application.java:208) at android.app.Activity.onResume(Activity.java:1229) at android.support.v4.app.FragmentActivity.onResume(SourceFile:485) at com.threesixteen.app.ui.activities.BaseActivity.onResume(SourceFile:186) at com.threesixteen.app.ui.activities.SplashActivity.onResume(SourceFile:113) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1257) at android.app.Activity.performResume(Activity.java:6119) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2975) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697) Caused by java.lang.ClassNotFoundException: nq$m at java.lang.Class.classForName(Class.java) at java.lang.Class.forName(Class.java:309) at android.os.Parcel$2.resolveClass(Parcel.java:2370) at java.io.ObjectInputStream.readEnumDescInternal(ObjectInputStream.java:1551) at java.io.ObjectInputStream.readEnumDesc(ObjectInputStream.java:1532) at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1577) at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:767) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940) at android.os.Parcel.readSerializable(Parcel.java:2378) at android.os.Parcel.readValue(Parcel.java:2203) at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.getBoolean(BaseBundle.java:658) at android.content.Intent.getBooleanExtra(Intent.java:4927) at io.branch.referral.Branch.checkIntentForSessionRestart(SourceFile:2440) at io.branch.referral.Branch.access$100(SourceFile:70) at io.branch.referral.Branch$BranchActivityLifeCycleObserver.onActivityResumed(SourceFile:2380) at android.app.Application.dispatchActivityResumed(Application.java:208) at android.app.Activity.onResume(Activity.java:1229) at android.support.v4.app.FragmentActivity.onResume(SourceFile:485) at com.threesixteen.app.ui.activities.BaseActivity.onResume(SourceFile:186) at com.threesixteen.app.ui.activities.SplashActivity.onResume(SourceFile:113) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1257) at android.app.Activity.performResume(Activity.java:6119) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2975) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697) Caused by java.lang.ClassNotFoundException: Didn't find class "nq$m" on path: DexPathList[[zip file "/data/app/com.threesixteen.app-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at java.lang.Class.classForName(Class.java) at java.lang.Class.forName(Class.java:309) at android.os.Parcel$2.resolveClass(Parcel.java:2370) at java.io.ObjectInputStream.readEnumDescInternal(ObjectInputStream.java:1551) at java.io.ObjectInputStream.readEnumDesc(ObjectInputStream.java:1532) at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1577) at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:767) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940) at android.os.Parcel.readSerializable(Parcel.java:2378) at android.os.Parcel.readValue(Parcel.java:2203) at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.getBoolean(BaseBundle.java:658) at android.content.Intent.getBooleanExtra(Intent.java:4927) at io.branch.referral.Branch.checkIntentForSessionRestart(SourceFile:2440) at io.branch.referral.Branch.access$100(SourceFile:70) at io.branch.referral.Branch$BranchActivityLifeCycleObserver.onActivityResumed(SourceFile:2380) at android.app.Application.dispatchActivityResumed(Application.java:208) at android.app.Activity.onResume(Activity.java:1229) at android.support.v4.app.FragmentActivity.onResume(SourceFile:485) at com.threesixteen.app.ui.activities.BaseActivity.onResume(SourceFile:186) at com.threesixteen.app.ui.activities.SplashActivity.onResume(SourceFile:113) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1257) at android.app.Activity.performResume(Activity.java:6119) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2975) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)
@saurabhdtu looks like you are adding a Parcelable object to your intent in your application. The object nq
is added to the intent as a parcelable extra while the intent is created and in your application some how there is no definition for that class. Can you please check if you missed to add any library
that has the class for the above parcelable.
Can you please help with the following questions to solve this quickly 1) How are you creating the intent to open the app? 2) If you are clicking some links to open the app can you please specify the link you use and how you create that
I am not adding any parcelable data in my Intent. The crash occurs when users click on the branch link that is generated in the app. An d the crash occurs on SplashScreen itself. The SplashScreen is the launch screen of the app. This is the declaration in the manifest file
<activity
android:name=".ui.activities.SplashActivity"
android:launchMode="standard"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<action android:name="android.intent.action.VIEW" />
<data
android:host="rooter.app.link"
android:scheme="https" />
<data
android:host="rooter.app.link"
android:scheme="http" />
<data
android:host="rooter.app.link"
android:scheme="rooter.io://" />
<data
android:host="rooter.test-app.link"
android:scheme="http" />
<data
android:host="rooter.test-app.link"
android:scheme="https" />
<data
android:host="rooter.test-app.link"
android:scheme="test-rooter.io://" />
</intent-filter>
</activity>
@saurabhdtu From the logs it is cleat that there is no definition of a class nq
. Is it your class to is it something added from other libs?
Caused by java.lang.ClassNotFoundException: Didn't find class "nq$m" on path: DexPathList[[zip file "/data/app/com.threesixteen.app-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
I suspect that this class is a Parcelalble class and somehow added to the intent.
Can you please make sure you are adding MultiDex
support for your application. ( If your app exceed dex limit and if you don't have multidex support then there is chance to for java.lang.ClassNotFoundException
)
Hi I am using branch android sdk This is my gradle dependency version compile('io.branch.sdk.android:library:2.+') { exclude module: 'answers-shim' } And here's the complete stacktrace
_#0. Crashed: main: 0 0 0x0000000000000000 at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3136) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3167) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2514) at android.app.ActivityThread.access$1000(ActivityThread.java:153) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:5529) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
--
Fatal Exception: java.lang.RuntimeException: Unable to resume activity {com.threesixteen.app/com.threesixteen.app.ui.activities.MatchDashboardActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@6be438a: Unmarshalling unknown type code 6881396 at offset 224 at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3136) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3167) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2514) at android.app.ActivityThread.access$1000(ActivityThread.java:153) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:5529) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) Caused by java.lang.RuntimeException: Parcel android.os.Parcel@6be438a: Unmarshalling unknown type code 6881396 at offset 224 at android.os.Parcel.readValue(Parcel.java:2340) at android.os.Parcel.readArrayMapInternal(Parcel.java:2614) at android.os.BaseBundle.unparcel(BaseBundle.java:224) at android.os.BaseBundle.getBoolean(BaseBundle.java:663) at android.content.Intent.getBooleanExtra(Intent.java:5221) at io.branch.referral.Branch.checkIntentForSessionRestart(SourceFile:2440) at io.branch.referral.Branch.access$100(SourceFile:70) at io.branch.referral.Branch$BranchActivityLifeCycleObserver.onActivityResumed(SourceFile:2380) at android.app.Application.dispatchActivityResumed(Application.java:218) at android.app.Activity.onResume(Activity.java:1220) at android.support.v4.app.FragmentActivity.onResume(SourceFile:485) at com.threesixteen.app.ui.activities.BaseActivity.onResume(SourceFile:200) at com.threesixteen.app.ui.activities.MatchDashboardActivity.onResume(SourceFile:368) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1259) at android.app.Activity.performResume(Activity.java:6379) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3125) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3167) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2514) at android.app.ActivityThread.access$1000(ActivityThread.java:153) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:5529) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
0. Crashed: main: 0 0 0x0000000000000000
1. Measurement Worker
2. OkHttp ConnectionPool
3. Queue
4. FinalizerWatchdogDaemon
5. main
6. ReferenceQueueDaemon
7. pool-3-thread-1
8. AsyncTask #8
9. pool-4-thread-1
10. pool-9-thread-1
11. TcmReceiver
12. Queue
13. Queue
14. AsyncTask #6
15. AsyncTask #4
16. AsyncTask #7
17. Answers Events Handler1
18. pool-10-thread-1
19. AsyncTask #9
20. AsyncTask #5
21. pool-2-thread-1
22. Okio Watchdog
23. pool-1-thread-1
24. AsyncTask #1
25. Queue
26. OkHttp ConnectionPool
27. AsyncTask #3
28. FileObserver
29. Queue
30. Crashlytics Exception Handler1
31. HeapTaskDaemon
32. FinalizerDaemon
33. AsyncTask #2
34. Queue
35. Queue
36. OkHttp ConnectionPool
37. Queue
38. Queue
39. pool-7-thread-1