Closed chrisbanes closed 6 years ago
It does have consumer proguard files set up, so there shouldn't be a need for consumers to manually proguard: https://github.com/airbnb/MvRx/blob/master/mvrx/build.gradle#L18
Where is it crashing? Perhaps https://github.com/airbnb/MvRx/blob/master/mvrx/proguard-rules.pro is not configured correctly.
Ah yes, I missed that! I'll dig into the de-obfuscated stack trace tomorrow and report back. This might actually more of a kotlin-reflect issue than MvRx.
Yes, please let me know the stack trace and I can fix that. when I tested this the file was picked up correctly and part of the .aar
but maybe we missed a rule.
Here's the de-obfuscated stack trace:
java.lang.RuntimeException: Unable to resume activity {app.tivi/app.tivi.showdetails.ShowDetailsActivity}: java.lang.RuntimeException: Failed to call observer method
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3784)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3816)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.RuntimeException: Failed to call observer method
at android.arch.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(SourceFile:225)
at android.arch.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(SourceFile:193)
at android.arch.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(SourceFile:184)
at android.arch.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(SourceFile:36)
at android.arch.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(SourceFile:354)
at android.arch.lifecycle.LifecycleRegistry.forwardPass(SourceFile:292)
at android.arch.lifecycle.LifecycleRegistry.sync(SourceFile:332)
at android.arch.lifecycle.LifecycleRegistry.moveToState(SourceFile:137)
at android.arch.lifecycle.LifecycleRegistry.handleLifecycleEvent(SourceFile:123)
at android.support.v4.app.Fragment.performCreate(SourceFile:2423)
at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1418)
at android.support.v4.app.FragmentTransition.addToFirstInLastOut(SourceFile:1195)
at android.support.v4.app.FragmentTransition.calculateFragments(SourceFile:1078)
at android.support.v4.app.FragmentTransition.startTransitions(SourceFile:117)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(SourceFile:2408)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(SourceFile:2366)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(SourceFile:2273)
at android.support.v4.app.FragmentController.execPendingActions(SourceFile:391)
at android.support.v4.app.FragmentActivity.onResume(SourceFile:517)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1412)
at android.app.Activity.performResume(Activity.java:7292)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3776)
... 11 more
Caused by: java.lang.ExceptionInInitializerError
at kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoader.<clinit>(Unknown Source:0)
at kotlin.reflect.jvm.internal.impl.builtins.KotlinBuiltIns.createBuiltInsModule(SourceFile:148)
at kotlin.reflect.jvm.internal.impl.platform.JvmBuiltIns.<init>(SourceFile:56)
at kotlin.reflect.jvm.internal.impl.platform.JvmBuiltIns.<init>(SourceFile:31)
<init>
at kotlin.reflect.jvm.internal.components.RuntimeModuleData$Companion.create(SourceFile:54)
at kotlin.reflect.jvm.internal.ModuleByClassLoaderKt.getOrCreateModule(SourceFile:58)
at kotlin.reflect.jvm.internal.KDeclarationContainerImpl$Data$moduleData$2.invoke(SourceFile:35)
at kotlin.reflect.jvm.internal.KDeclarationContainerImpl$Data$moduleData$2.invoke(SourceFile:32)
at kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke(SourceFile:93)
at kotlin.reflect.jvm.internal.ReflectProperties$Val.getValue(SourceFile:32)
invoke
at kotlin.reflect.jvm.internal.KDeclarationContainerImpl$Data.getModuleData(Unknown Source:7)
at kotlin.reflect.jvm.internal.KClassImpl$Data$descriptor$2.invoke(SourceFile:46)
at kotlin.reflect.jvm.internal.KClassImpl$Data$descriptor$2.invoke(SourceFile:43)
at kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke(SourceFile:93)
at kotlin.reflect.jvm.internal.ReflectProperties$Val.getValue(SourceFile:32)
invoke
at kotlin.reflect.jvm.internal.KClassImpl$Data.getDescriptor(Unknown Source:7)
at kotlin.reflect.jvm.internal.KClassImpl$Data$nestedClasses$2.invoke(SourceFile:96)
at kotlin.reflect.jvm.internal.KClassImpl$Data$nestedClasses$2.invoke(SourceFile:43)
at kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke(SourceFile:93)
at kotlin.reflect.jvm.internal.ReflectProperties$Val.getValue(SourceFile:32)
invoke
at kotlin.reflect.jvm.internal.KClassImpl$Data.getNestedClasses(Unknown Source:7)
at kotlin.reflect.jvm.internal.KClassImpl.getNestedClasses(SourceFile:224)
at kotlin.reflect.full.KClasses.getCompanionObject(SourceFile:51)
at kotlin.reflect.full.KClasses.getCompanionObjectInstance(SourceFile:61)
at com.airbnb.mvrx.MvRxViewModelProvider.createViewModel(SourceFile:63)
at com.airbnb.mvrx.MvRxViewModelProvider$get$factory$1.invoke(SourceFile:43)
at com.airbnb.mvrx.MvRxViewModelProvider$get$factory$1.invoke(SourceFile:16)
at com.airbnb.mvrx.MvRxFactory.create(SourceFile:9)
at android.arch.lifecycle.ViewModelProvider.get(SourceFile:134)
at com.airbnb.mvrx.MvRxViewModelProvider.get(SourceFile:48)
at app.tivi.showdetails.details.ShowDetailsFragment$$special$$inlined$fragmentViewModel$1.invoke(SourceFile:183)
at app.tivi.showdetails.details.ShowDetailsFragment$$special$$inlined$fragmentViewModel$1.invoke(Unknown Source:0)
at com.airbnb.mvrx.lifecycleAwareLazy.getValue(SourceFile:49)
at com.airbnb.mvrx.lifecycleAwareLazy$1.onStart(SourceFile:28)
at java.lang.reflect.Method.invoke(Native Method)
at android.arch.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(SourceFile:215)
... 32 more
Caused by: java.util.NoSuchElementException: Collection is empty.
at kotlin.collections.CollectionsKt___CollectionsKt.first(SourceFile:172)
at kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoader$Companion.<clinit>(SourceFile:38)
... 68 more
Can you also paste the obfuscated one? I think the interesting part also looks to be ( hard to tell int he deobfuscatd stack-trace) in the 68 more
at the bottom. So if you could expand that and post that too, that would be helpful.
I've noticed lots of reflection using in MvRx, and indeed my app crashes with Proguard. MvRx should publish some recommended Proguard rules.