2016-04-26 8 views
8

zu lösen Ich benutze Android Studio 2.0 und in der letzten Zeit upgrade ich jdk 7 zu jdk 8 und ich mache einige Änderungen an der Datei gradle, aber jetzt bekomme ich diesen FehlerSo beheben Sie diesen Fehler VFY: nicht in der Lage, virtuelle Methode

E/InstantRun: Could not find slices in APK; aborting. 
I/dalvikvm: Could not find method android.content.Context.getSystemService, referenced from method com.mstr.malik.elbalaapps.ControlPanel.access$super 
W/dalvikvm: VFY: unable to resolve virtual method 435: Landroid/content/Context;.getSystemService (Ljava/lang/Class;)Ljava/lang/Object; 
D/dalvikvm: VFY: replacing opcode 0x6f at 0x004b 
I/dalvikvm: Could not find method android.app.Activity.stopLockTask, referenced from method com.mstr.malik.elbalaapps.ControlPanel.access$super 
W/dalvikvm: VFY: unable to resolve virtual method 231: Landroid/app/Activity;.stopLockTask()V 
D/dalvikvm: VFY: replacing opcode 0x6f at 0x00b9 
E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.mstr.malik.elbalaapps.ControlPanel.access$super 
W/dalvikvm: VFY: unable to resolve check-cast 224 (Landroid/os/PersistableBundle;) in Lcom/mstr/malik/elbalaapps/ControlPanel; 
D/dalvikvm: VFY: replacing opcode 0x1f at 0x00f1 
I/dalvikvm: Could not find method android.content.Context.getColorStateList, referenced from method com.mstr.malik.elbalaapps.ControlPanel.access$super 
W/dalvikvm: VFY: unable to resolve virtual method 417: Landroid/content/Context;.getColorStateList (I)Landroid/content/res/ColorStateList; 
D/dalvikvm: VFY: replacing opcode 0x6f at 0x0101 
I/dalvikvm: Could not find method android.app.Activity.onVisibleBehindCanceled, referenced from method com.mstr.malik.elbalaapps.ControlPanel.access$super 
W/dalvikvm: VFY: unable to resolve virtual method 154: Landroid/app/Activity;.onVisibleBehindCanceled()V 
D/dalvikvm: VFY: replacing opcode 0x6f at 0x0111 
I/dalvikvm: Could not find method android.app.Activity.onWindowStartingActionMode, referenced from method com.mstr.malik.elbalaapps.ControlPanel.access$super 
W/dalvikvm: VFY: unable to resolve virtual method 158: Landroid/app/Activity;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode; 
D/dalvikvm: VFY: replacing opcode 0x6f at 0x0137 
E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.mstr.malik.elbalaapps.ControlPanel.access$super 
W/dalvikvm: VFY: unable to resolve check-cast 224 (Landroid/os/PersistableBundle;) in Lcom/mstr/malik/elbalaapps/ControlPanel; 
D/dalvikvm: VFY: replacing opcode 0x1f at 0x019a 

Jahr dies ist gradle Datei

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "24.0.0 rc3" 

    defaultConfig { 
     applicationId "com.mstr.malik.elbalaapps" 
     minSdkVersion 18 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.3.0' 
} 

Wie kann ich den Fehler behandeln, ich habe versucht, Modifikation von Version von Kompilierung der Kompilierung ‚com.android.support:appcompat-v7:23.3.0‘ zu kompilieren 'com.android.support:appcompat-v7:23.0.0' Es stürzt auch ab, Wie kann ich es tun? danke im voraus

Antwort

9

Wenn Sie die Laufzeitversion der Android-Version einchecken, können Sie diese Warnungen ignorieren. Es bedeutet nur, dass Sie einen Verweis auf eine Methode haben, die auf der Plattform, auf der der Code derzeit ausgeführt wird, nicht verfügbar ist. Sie müssen nur sicherstellen, dass Sie keine neueren APIs auf älteren Plattformen verwenden. Normalerweise warnt Sie Lint, wenn Sie in Release-Builds etwas falsch machen. Solange du das bedenkst, musst du dir keine Sorgen machen.

Nur als Beispiel für eine solche Laufzeitschalter:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    // You can use here an API which was added in Lollipop. 
} 
+0

Vielen Dank, ich danke Ihnen sehr für Ihre Hilfe –

+0

In meinem Fall funktioniert es, aber die Anwendung dauert jetzt lange (3 oder 4 Sekunden). Gibt es einen Weg, es zu lösen? oder zumindest ein Workaround? – Gatunox

3

Dies ist normal nach Googleandroid Ingenieure.

Siehe https://code.google.com/p/android/issues/detail?id=198567

Dies geschieht, wenn Sie gegen eine höhere api Ebene zusammenstellen als die api Ebene eingesetzt Gerät. Die Protokolle zeigen an, dass einige der Methoden nicht verfügbar sind und die virtuelle Maschine sie durch die alternative Implementierung ersetzen wird.

Br, Nick

1

Ich habe die gleichen Warnungen und dann fatal NoClassDefFoundError. Das Problem kann von Dex-generierten Dateien im Multi-Dex-Modus von Android-Plugin gehen. Alle Klassen, die nicht gefunden werden konnten, waren in einem Paket. Das Paket wurde zwischen 2 Dex-Dateien aufgeteilt. Eine Lösung erzeugt eine MainDexList-Datei, in der ich nur nicht aufgelöste Klassen, die mit einer Dex-Datei verbunden wurden, aufgenommen habe. Für weitere Details siehe auch here.

Verwandte Themen