Fixed
Status Update
Comments
yb...@google.com <yb...@google.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```
yb...@google.com <yb...@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.
ra...@gmail.com <ra...@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.)
ra...@gmail.com <ra...@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
ra...@gmail.com <ra...@gmail.com> #6
Re #5 - please file a new issue with a sample project that reproduces your issue.
ra...@gmail.com <ra...@gmail.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: either 1.0.0 or 1.1.0-alpha2
Devices/Android versions reproduced on: n/a
The Room compiler does not support two @Dao classes with the same simple name and same package. This would occur if you have two static @Dao classes:
@Entity
public class GoodThingy {
@PrimaryKey int id;
public String something;
@Dao
public static abstract class Store {
@Query("SELECT * FROM GoodThingy")
public abstract List<GoodThingy> all();
}
}
@Entity
public class BadThingy {
@PrimaryKey int id;
public String something;
@Dao
public static abstract class Store {
@Query("SELECT * FROM BadThingy")
abstract List<BadThingy> all();
}
}
The code generator tries generating Store_Impl.java for each of those, and that fails with:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> javax.annotation.processing.FilerException: Attempt to recreate a file for type com.commonsware.abstractroombug.Store_Impl
The workaround is to name each static @Dao something different (e.g., GoodStore, BadStore).
IMHO, ideally either:
- Using the same name is supported, by generating distinct Java classes for each (e.g., GoodThingy_Store_Impl.java, BadThingy_Store_Impl.java), or
- This limitation is documented, or
- The error message be more specific, indicating that this sort of thing is the source of the trouble (as "Attempt to recreate a file" may not be intuitively obvious to developers)
The code shown above is from the attached project that reproduces the problem. The project right now is set for 1.1.0-alpha2, but the same problem exists with 1.0.0.