3

Ich bin Neuling auf Instant-App in Android und folgenden Link unten als Referenz: https://codelabs.developers.google.com/codelabs/android-instant-apps/#6Multi-Funktion Instant-App Absturz-Problem

installierbaren apk und Instant-App mit Single-Feature funktionieren gut.

Aber wenn ich versuche, die Instant-App mit mehreren Funktionen auszuführen, stürzt sie ab (Schritt 7 unter dem obigen Link).

Crash-Report:

E: FATAL EXCEPTION: main 
    Process: com.bhaveshdesai.topekaapk, PID: 17609 
    java.lang.IncompatibleClassChangeError: Structural change of android.support.v4.app.Fragment is hazardous (/data/app/com.bhaveshdesai.topekaapk-PhiyPZ303gxpikP7GugKyA==/oat/x86/split_topekaui.odex at compile time, /data/app/com.bhaveshdesai.topekaapk-PhiyPZ303gxpikP7GugKyA==/oat/x86/base.odex at runtime): Virtual method count off: 111 vs 150 
    Landroid/support/v4/app/Fragment; (Compile time): 
    Static fields: 
    I ACTIVITY_CREATED 
    I CREATED 
    I INITIALIZING 
    I RESUMED 
    I STARTED 
    I STOPPED 
    ..... 

Eigenschaft Gradle Datei:

apply plugin: 'com.android.feature' 

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.0" 
    dataBinding { 
     enabled true 
    } 

    defaultConfig { 
     minSdkVersion 19 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 

     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 

    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    implementation project(':topeka-base') 
} 

App Gradle Datei:

/* 
* Copyright 2015 Google Inc. 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 
*  http://www.apache.org/licenses/LICENSE-2.0 
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS, 
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License. 
*/ 

//apply plugin: 'com.android.application' 
apply plugin: 'com.android.feature' 
android { 
    baseFeature = true 

    compileSdkVersion 26 
    buildToolsVersion "26.0.0" 

    dataBinding { 
     enabled = true 
    } 

    defaultConfig { 
     minSdkVersion 19 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner' 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
     } 
    } 

    packagingOptions { 
     exclude 'LICENSE.txt' 
    } 
} 

ext { 
    supportLibVersion = "25.4.0" 
    espressoVersion = "2.2.2" 
    androidTestVersion = "0.5" 
    hamcrestVersion = "1.3" 
    junitVersion = "4.12" 
} 

dependencies { 
    api "com.android.support:appcompat-v7:${supportLibVersion}" 
    api "com.android.support:cardview-v7:${supportLibVersion}" 
    api "com.android.support:design:${supportLibVersion}" 
    api "com.android.support:recyclerview-v7:${supportLibVersion}" 
    api "com.android.support.test.espresso:espresso-idling-resource:${espressoVersion}" 
    testApi "junit:junit:${junitVersion}" 

    androidTestApi("com.android.support.test.espresso:espresso-core:${espressoVersion}") { 
     exclude module: "espresso-idling-resource" 
     exclude group: "com.android.support" 
    } 
    androidTestApi("com.android.support.test.espresso:espresso-contrib:${espressoVersion}") { 
     exclude module: "espresso-core" 
     exclude module: "recyclerview-v7" 
     exclude group: "com.android.support" 
    } 
    androidTestApi("com.android.support.test:rules:${androidTestVersion}") { 
     exclude group: "com.android.support" 
    } 

    androidTestApi("com.android.support.test:runner:${androidTestVersion}") { 
     exclude group: "com.android.support" 
    } 

    androidTestApi "org.hamcrest:hamcrest-core:${hamcrestVersion}" 

    feature project(":topekaui") 
    application project(":topekaapk") 
} 

Pl hilf mir, diesen Crash zu lösen.

Antwort

5

Nach so viel Versuch fand ich das Problem.

Problem ist darauf zurückzuführen android.support.v4.app.Fragment

Nach Änderung android.support.v4.app.Fragment-android.app.Fragment seine Arbeits verwenden.

+0

Ich konnte das nicht reproduzieren. Kannst du einen Fehler einreichen, dann verlinke ihn wieder hier? Es wäre hilfreich für alle, danke! https://issuetracker.google.com/issues/new?component=316045&template=1018787 –

2

IncompatibleClassChangeError passiert in der Regel, wenn Sie eine inkompatible binäre Änderung an der Bibliothek vornehmen und den Clientcode nicht erneut kompilieren. Siehe What causes java.lang.IncompatibleClassChangeError? (aber dies ist möglicherweise nicht die Ursache Ihres Problems)

Nach welchem ​​Schritt bekommen Sie den Absturz?

Was ich jedoch jetzt sehen kann, ist, dass Ihre Feature-Gradle-Datei die folgende Abhängigkeit implementation project(':topeka-base') hat, wenn sie stattdessen api project(':topeka-base') enthalten sollte. (Unter der Annahme, dass Ihre Eigenschaft gradle = topeka-ui gradle)

topeka-ui/build.gradle

Ersetzen Sie alle zuvor erzeugten Abhängigkeiten mit dem folgende Abhängigkeit:

dependencies { 
    api project(':topeka-base') 
} 

Bitte überprüfen Sie die Codelab-Anweisungen, um sicherzustellen, dass Sie keine Schritte verpasst haben.

+1

Ich habe 'Implementierungsprojekt (': topeka-base ') 'in' api project (': topeka-base ') 'geändert, aber es gibt denselben Fehler. –