webentwicklung-frage-antwort-db.com.de

AppcompatActivity-Fehler mit Android Studio

Ich erhalte diesen Fehler beim Erstellen einer Android-Anwendung mit Android Studio:

24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to find class referenced in signature (Landroid/os/PersistableBundle;)
08-20 10:53:23.605  24192-24192/com.mkapp.apps.demo1 I/dalvikvm﹕ Could not find method Android.support.v7.app.AppCompatActivity.onCreate, referenced from method com.mkapp.apps.demo1.TourActivity.onCreate
08-20 10:53:23.605  24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 8393: Landroid/support/v7/app/AppCompatActivity;.onCreate (Landroid/os/Bundle;Landroid/os/PersistableBundle;)V
08-20 10:53:23.605  24192-24192/com.mkapp.apps.demo1 D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000

meine Abhängigkeiten:

    compile 'com.Android.support:support-v4:22.2.1'
    compile 'com.google.Android.gms:play-services:7.3.0'
    compile 'com.Android.support:appcompat-v7:22.1.0+'
    compile 'com.Android.support:multidex:1.0.1'

vielen Dank für deine Hilfe

alte Aktivitäten, die von AppcompatActivity erben, funktionieren einwandfrei. aber wenn ich ein neues erstelle, bekomme ich die Fehlermeldung ..__ hier ist mein gradle.build:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "com.mkapp.apps.demo1"
        minSdkVersion 10
        targetSdkVersion 22
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
        multiDexEnabled true
    }
    dexOptions {
        incremental true
        javaMaxHeapSize "4g"
    }
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile project(':photocollage')
    compile project(':gWFacebookSDK')
//    compile project(':listViewAnimation')
    compile 'com.google.Android.gms:play-services:7.3.0'
    compile 'com.Android.support:appcompat-v7:22.1.0'

    compile 'com.Android.support:multidex:1.0.1'
    compile files('libs/aws-Android-sdk-2.1.0-core.jar')
    compile files('libs/aws-Android-sdk-2.1.0-sns.jar')
    compile files('libs/dexmaker-1.1.jar')
    compile files('libs/dexmaker-mockito-1.1-custom.jar')
//    compile files('libs/listviewanimations_lib-core_3.1.0.jar')
    compile files('libs/signpost-commonshttp4-1.2.1.1.jar')
    compile files('libs/signpost-core-1.2.1.1.jar')
    compile files('libs/signpost-jetty6-1.2.1.1.jar')
    compile files('libs/Twitter4j-core-4.0.1.jar')
    compile files('libs/universal-image-loader-1.9.3.jar')
}
14
Linh Nguyen

Sie haben dieses Problem, weil Sie versuchen, onCreate (Bundle savedInstanceState, PersistableBundle persistentState) zu verwenden. Diese Methode ist jedoch nur ab API Level 21 verfügbar. 

Ich kann das Problem mit diesem Beispielcode unter Android 4.4 reproduzieren:

public class TourActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState, new PersistableBundle());
    }

    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
    }
}

Das Problem wurde behoben, indem jedes Vorkommen von PersistableBundle entfernt wurde:

public class TourActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

Überprüfen Sie, wo Sie PersistableBundle in Ihrer TourActivity verwenden, und entfernen Sie sie, oder aktualisieren Sie Ihre Antwort mit dem Code Ihrer Aktivität.

16

Aktualisieren Sie Ihre Unterstützungsbibliothek auf 23 und Ihre compileSdkVersion auf 23 in build.gradle.

compileSdkVersion 23

...

compile 'com.Android.support:support-v4:23.0.0'
compile 'com.Android.support:appcompat-v7:23.0.0'

Dann synchronisieren Sie Ihr Projekt mit Gradle-Dateien.

Google Play-Dienste haben jetzt auch 7.8.0

11
Jared Rummler

Das Problem ist, dass Ihre TourActivity eine Klasse verwendet, die nur in API Level 21 PersistableBundle verfügbar ist. Die Frage ist, warum das so ist.

Denken Sie daran, dass neue Aktivitäten auch von AppCompatActivity erben müssen.

Kurze Frage, überschreiben Sie public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) in der problematischen Aktivität? Wenn Sie dies tun, speichern Sie wahrscheinlich einen Verweis auf PersistableBundle, der im Gerät/Emulator nicht verfügbar ist. Versuchen Sie es zu entfernen, wenn Sie dort nichts tun, oder kommentieren Sie es, um es zu versuchen ...

5
Arturo

Aktualisieren Sie zuerst Ihre Bibliotheken auf die neuesten Versionen.

Wenn dies eine vollständige Liste der enthaltenen Bibliotheken ist:

    compile 'com.Android.support:support-v4:22.2.1'
    compile 'com.google.Android.gms:play-services:7.3.0'
    compile 'com.Android.support:appcompat-v7:22.1.0+'
    compile 'com.Android.support:multidex:1.0.1'

dann brauchen Sie dieses nicht wirklich aufzunehmen

    compile 'com.Android.support:multidex:1.0.1'
3
Ivan V

Einfach , Springen die Datei -> Caches ungültig machen und neu starten.Vielen Dank

1
Abhijeet Singh

Hier ist eine kitschige Lösung, aber es hat tatsächlich für mich funktioniert! Ich habe den erforderlichen Pfad zur fehlenden Bibliothek manuell erstellt:

 C:\Users\spomerleau\AppData\Local\Android\Sdk\extras\Android\support\v7\appcompat\libs

und fügte die beiden fehlenden .jar-Dateien aus here und here hinzu. Android Studio fand schließlich die Abhängigkeiten, die zur Ausführung von Java erforderlich waren. 

0
sebseb24

1. Ändern Sie einfach Ihre Abhängigkeiten, um sie im build.gradle-- darzustellen.

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'junit:junit:4.12'
    implementation 'com.Android.support:support-v4:23.4.0'
    implementation 'com.Android.support:appcompat-v7:23.4.0'
    implementation 'com.Android.support:support-annotations:27.1.1'
}

2. Dann wird angezeigt, dass Gradle synchronisiert wird. Anschließend wird build.gradle synchronisiert, um die Änderungen zu aktualisieren.

0
arpit1714