Fixed
Status Update
Comments
yb...@google.com <yb...@google.com>
ne...@gmail.com <ne...@gmail.com> #2
Here is the stacktrace from the provided sample project
``` --------- beginning of crash
2018-05-16 13:39:54.438 29258-29258/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: io.kayvan.io18spike, PID: 29258
java.lang.RuntimeException: Unable to start activity ComponentInfo{io.kayvan.io18spike/io.kayvan.io18spike.MainActivity}: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2925)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:110)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1800)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6649)
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:826)
Caused by: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class fragment
Caused by: java.lang.RuntimeException: Exception inflating io.kayvan.io18spike:navigation/nav_graph line 12
at androidx.navigation.i.a(Unknown Source:124)
at androidx.navigation.d.a(Unknown Source:4)
at androidx.navigation.fragment.NavHostFragment.f(Unknown Source:88)
at android.support.v4.app.h.k(Unknown Source:15)
at android.support.v4.app.n.a(Unknown Source:367)
at android.support.v4.app.n.b(Unknown Source:7)
at android.support.v4.app.n.a(Unknown Source:74)
at android.support.v4.app.n.onCreateView(Unknown Source:216)
at android.support.v4.app.k.a(Unknown Source:4)
at android.support.v4.app.i.a(Unknown Source:2)
at android.support.v4.app.e.onCreateView(Unknown Source:0)
at android.support.v4.app.i.onCreateView(Unknown Source:0)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.j.b(Unknown Source:23)
at android.support.v7.app.c.setContentView(Unknown Source:4)
at io.kayvan.io18spike.MainActivity.onCreate(Unknown Source:6)
at android.app.Activity.performCreate(Activity.java:7130)
at android.app.Activity.performCreate(Activity.java:7121)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1262)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2905)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:110)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1800)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6649)
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:826)
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: io.kayvan.io18spike.Fragment2
2018-05-16 13:39:54.439 29258-29258/? E/AndroidRuntime: at androidx.navigation.fragment.a$a.a(Unknown Source:58)
at androidx.navigation.fragment.a$a.a(Unknown Source:19)
at androidx.navigation.i.a(Unknown Source:16)
at androidx.navigation.i.a(Unknown Source:133)
at androidx.navigation.i.a(Unknown Source:31)
... 36 more
Caused by: java.lang.ClassNotFoundException: io.kayvan.io18spike.Fragment2
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at androidx.navigation.fragment.a$a.a(Unknown Source:45)
... 40 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "io.kayvan.io18spike.Fragment2" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/io.kayvan.io18spike-qwaeSphnoJz10eFFCCH9Fw==/base.apk"],nativeLibraryDirectories=[/data/app/io.kayvan.io18spike-qwaeSphnoJz10eFFCCH9Fw==/lib/x86, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 43 more```
``` --------- beginning of crash
2018-05-16 13:39:54.438 29258-29258/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: io.kayvan.io18spike, PID: 29258
java.lang.RuntimeException: Unable to start activity ComponentInfo{io.kayvan.io18spike/io.kayvan.io18spike.MainActivity}: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2925)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:110)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1800)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6649)
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:826)
Caused by: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class fragment
Caused by: java.lang.RuntimeException: Exception inflating io.kayvan.io18spike:navigation/nav_graph line 12
at androidx.navigation.i.a(Unknown Source:124)
at androidx.navigation.d.a(Unknown Source:4)
at androidx.navigation.fragment.NavHostFragment.f(Unknown Source:88)
at android.support.v4.app.h.k(Unknown Source:15)
at android.support.v4.app.n.a(Unknown Source:367)
at android.support.v4.app.n.b(Unknown Source:7)
at android.support.v4.app.n.a(Unknown Source:74)
at android.support.v4.app.n.onCreateView(Unknown Source:216)
at android.support.v4.app.k.a(Unknown Source:4)
at android.support.v4.app.i.a(Unknown Source:2)
at android.support.v4.app.e.onCreateView(Unknown Source:0)
at android.support.v4.app.i.onCreateView(Unknown Source:0)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.j.b(Unknown Source:23)
at android.support.v7.app.c.setContentView(Unknown Source:4)
at io.kayvan.io18spike.MainActivity.onCreate(Unknown Source:6)
at android.app.Activity.performCreate(Activity.java:7130)
at android.app.Activity.performCreate(Activity.java:7121)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1262)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2905)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:110)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1800)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6649)
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:826)
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: io.kayvan.io18spike.Fragment2
2018-05-16 13:39:54.439 29258-29258/? E/AndroidRuntime: at androidx.navigation.fragment.a$a.a(Unknown Source:58)
at androidx.navigation.fragment.a$a.a(Unknown Source:19)
at androidx.navigation.i.a(Unknown Source:16)
at androidx.navigation.i.a(Unknown Source:133)
at androidx.navigation.i.a(Unknown Source:31)
... 36 more
Caused by: java.lang.ClassNotFoundException: io.kayvan.io18spike.Fragment2
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at androidx.navigation.fragment.a$a.a(Unknown Source:45)
... 40 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "io.kayvan.io18spike.Fragment2" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/io.kayvan.io18spike-qwaeSphnoJz10eFFCCH9Fw==/base.apk"],nativeLibraryDirectories=[/data/app/io.kayvan.io18spike-qwaeSphnoJz10eFFCCH9Fw==/lib/x86, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 43 more```
fl...@google.com <fl...@google.com>
fl...@google.com <fl...@google.com>
fl...@google.com <fl...@google.com> #3
Thanks, this is definitely something we need to fix. As a workaround, you can manually keep each of the Fragments in your navigation graph if you don't reference them elsewhere.
bo...@gmail.com <bo...@gmail.com> #4
This has been fixed as part of aapt2 that will ship with the Android Gradle Plugin 3.2 Beta 01.
aapt2 will automatically add keep rules for every android:name attribute found in a Navigation XML file. (This is a similar approach used for the android:name attribute on <fragment> elements in layout XML files.)
aapt2 will automatically add keep rules for every android:name attribute found in a Navigation XML file. (This is a similar approach used for the android:name attribute on <fragment> elements in layout XML files.)
ne...@gmail.com <ne...@gmail.com> #5
Hum, ran into this, as this keeps happening to me..
Gradle plugin 3.5
Navigation 2.1
Gradle plugin 3.5
Navigation 2.1
bo...@gmail.com <bo...@gmail.com> #6
Re #5 - please file a new issue with a sample project that reproduces your issue.
yb...@google.com <yb...@google.com> #7
android.view.InflateException: Binary XML file line #30 in com.example.customnavigation:layout/activity_main: Binary XML file line #30 in com.example.customnavigation:layout/activity_main: Error inflating class com.google.android.material.navigation.NavigationView
Description
Version used: 1.0.0-alpha2
Looking at the source of LiveDataReactiveStreams.fromPublisher() the Publisher that is passed in is never unsubscribed. This means that the underlying Publisher has no opportunity for releasing resources and stopping work which may result in memory leaks and other bugs. I would have expected the Publisher to be unsubscribed in LiveData onInActive() callback and subscribed in onActive() as this signals that there are consumers interested in the LiveData.
Alternatively I think the publisher should at least be unsubscribed then the associated LifecycleOwner goes away (when the Lifecycle moves to destroyed).