Instant APP InflateException

I get the following inflateException when running my instant application:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xfzj.instantappdemo/com.xfzj.instantappdemo.feature.MainActivity}: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class android.support.design.widget.AppBarLayout
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                             at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                             at android.os.Looper.loop(Looper.java:148)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                          Caused by: android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class android.support.design.widget.AppBarLayout
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                                             at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292)
                                                                             at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                             at com.xfzj.instantappdemo.feature.MainActivity.onCreate(MainActivity.java:17)
                                                                             at android.app.Activity.performCreate(Activity.java:6237)
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
</pre>

      

Here is my layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.xfzj.instantappdemo2.feature.MainActivity">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_main" />

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    app:srcCompat="@android:drawable/ic_dialog_email" />
</LinearLayout>

      

Here is my build.gradle build file:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation project(':base')
    implementation 'com.android.support:appcompat-v7:25.4.0'
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:design:25.4.0'
}

      

If I run the installed application, it is successful.

Is it com.android.support:design:25.4.0

incompatible with the instant app?

+3


source to share


2 answers


com.android.support:design:25.4.0

Instant Apps supported. The problem lies in duplicate dependencies on application libraries and support design between functional modules. Typically, since these libraries are common to all functions, they will be included in the base function module file build.gradle

(example from Android Studio creating the default Instant App project):

dependencies {
    application project(':app')
    feature project(':feature')
    api 'com.android.support:appcompat-v7:25.4.0'
    api 'com.android.support.constraint:constraint-layout:1.0.2'
    api 'com.android.support:design:25.4.0'
}

      

Since other function modules are dependent on the underlying function module, they should not include these libraries. The functional module build.gradle

should include:



dependencies {
    ...
    implementation project(':base')
    ...
 }

      

In other words, all libraries defined in the base function module are available for other functions and they do not need to be re-added as a dependency.

+1


source


Since both the instant and installed app design library, the dependency

implementation 'com.android.support:appcompat-v7:25.4.0 

      



should be in the main file build.gradle

, not in installed

.

If you want to include it in some non-basic function, make sure that build.gradle

this function is enabled as snapshot and installed files .

0


source







All Articles