2016-04-26 42 views
8

Tôi đang sử dụng android studio 2.0 và trong lần trước tôi nâng cấp jdk 7 lên jdk 8 và tôi đang thực hiện một số thay đổi đối với tệp gradle nhưng bây giờ tôi nhận được lỗi nàyLàm thế nào để giải quyết lỗi này VFY: không thể giải quyết phương pháp ảo

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 

Một này là gradle tập tin

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' 
} 

Làm thế nào tôi có thể xử lý các lỗi, tôi đã cố gắng chanfe phiên bản biên dịch biên dịch 'com.android.support:appcompat-v7:23.3.0' để biên dịch 'com.android.support:appcompat-v7:23.0.0' Nó cũng bị lỗi, tôi có thể làm như thế nào? cảm ơn trước

Trả lời

9

Nếu bạn kiểm tra trong thời gian chạy phiên bản Android, bạn có thể bỏ qua cảnh báo này một cách an toàn. Nó chỉ có nghĩa là bạn có một tham chiếu đến một phương thức không có sẵn trên nền tảng đó, nơi bạn đang chạy mã. Bạn chỉ cần đảm bảo rằng bạn không sử dụng các API mới hơn trên các nền tảng cũ hơn. Thông thường lint sẽ cảnh báo bạn nếu bạn làm điều gì sai trong bản phát hành bản phát hành. Miễn là bạn lưu ý rằng bạn không cần phải lo lắng về nó.

Cũng như một ví dụ cho một công tắc thời gian chạy như vậy:

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

Cảm ơn bạn Tôi thực sự đánh giá cao sự giúp đỡ của bạn –

+0

Trong trường hợp của tôi nó hoạt động, nhưng bây giờ ứng dụng mất nhiều thời gian để tải (3 hoặc 4 giây). có cách nào để giải quyết nó không? hoặc ít nhất là một workaround nó? – Gatunox

3

này là bình thường theo kỹ sư google Android.

Tham khảo https://code.google.com/p/android/issues/detail?id=198567

Điều này xảy ra khi bạn biên dịch chống lại một mức độ api cao hơn mức thiết bị api triển khai. Các nhật ký chỉ ra rằng, một số phương thức không có sẵn và máy ảo sẽ thay thế chúng bằng cách thực hiện thay thế.

Br, Nick

1

tôi có những lời cảnh báo tương tự và sau đó NoClassDefFoundError gây tử vong. Vấn đề có thể đi từ dex tạo ra các tập tin trong chế độ đa dex của android-plugin. Tất cả các lớp không thể tìm thấy đều nằm trong một gói. Gói được chia giữa 2 tệp dex. Một giải pháp là tạo tập tin MainDexList mà tôi chỉ đưa vào các lớp chưa được giải quyết đã được nối với một tệp dex. Để biết thêm chi tiết, xem thêm here.

Các vấn đề liên quan