2015-02-03 25 views
11

này được log lỗi của tôi đạt được với phòng thu android 1.0.2Android java.lang.NoClassDefFoundError studio: android.support.v4.app.NavUtilsJB

02-03 13:05:23.831 8385-8385/com.******.*******E/AndroidRuntime﹕  FATAL EXCEPTION: main 
    java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB 
     at android.support.v4.app.NavUtils$NavUtilsImplJB.getParentActivityName(NavUtils .java:125) 
     at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:302) 
     at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:281) 
     at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:142) 
     at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123) 
     at com..******.*******.****.ActivityWelcome.onCreate(ActivityWelcome.java:33) 
     at android.app.Activity.performCreate(Activity.java:5104) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
     at android.app.ActivityThread.access$600(ActivityThread.java:141) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5041) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
     at dalvik.system.NativeStart.main(Native Method) 

Cấu hình

buildToolsVersion "21.1.2" 
android SDK TOOLS"24.0.2" 
multidex enabled 
predexLibraries =false 
incremental = true 
jumboMode = false 
    dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android.gms:play-services:6.5.87' 
    compile 'com.google.code.gson:gson:2.3' 
    compile 'com.android.support:support-v4:[email protected]' 
    compile 'com.android.support:appcompat-v7:[email protected]' 
    compile project(':ViewPagerIndicator') 
    compile('de.keyboardsurfer.android.widget:crouton:[email protected]') { 
     exclude group: 'com.google.android', module: 'support-v4' 
    } 
    compile 'org.java-websocket:Java-WebSocket:1.3.0' 
} 

Làm thế nào để giải quyết lỗi này? gradlew sạch sẽ không giúp ích gì. Xây dựng thư mục xóa cũng không hoạt động. Android studio không hiển thị lỗi trong khi biên dịch.

+0

Người dùng trên một số điện thoại cũng báo cáo lỗi tương tự cho ứng dụng của tôi. Cấu hình có dạng: [this] (https: //raw.githubusercontent.com/sanskrit-coders/stardict-dictionary-updater/a5c213592a3759e42ff96f0121839bb58fa1e1ed/app/build.gradle) –

+0

tôi đã tải xuống dự án theo cách thủ công từ đồng nghiệp đã giải quyết vấn đề này và bắt đầu hoạt động. Lấy mã thông qua git không giúp được gì. Trong trường hợp của tôi, có một vấn đề khác với các phiên bản Java JDK khác nhau - các lỗi khác nhau. – Alpha

+0

Alpha, bạn có thể xác nhận hay không rằng bản sửa lỗi tôi đề xuất là những gì đồng nghiệp của bạn sử dụng? – Sam

Trả lời

41

Tôi gặp sự cố này và chỉ tìm thấy giải pháp - câu trả lời là RTFM! Dưới đây là các hướng dẫn: https://developer.android.com/tools/building/multidex.html

Multidexing là một tính năng mới và do đó yêu cầu thư viện hỗ trợ phải tương thích với các thiết bị trước kẹo. Bạn cần phải thêm dòng sau vào phụ thuộc tập tin gradle của bạn:

compile 'com.android.support:multidex:1.0.0' 

Cũng cho phép đầu ra multidex trong tập tin gradle của bạn:

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.0" 

    defaultConfig { 
     ... 
     minSdkVersion 14 
     targetSdkVersion 21 
     ... 

     // Enabling multidex support. 
     multiDexEnabled true 
    } 
} 

Và sau đó thêm các ứng dụng hỗ trợ multidex đến biểu hiện của bạn:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.multidex.myapplication"> 
    <application 
     ... 
     android:name="android.support.multidex.MultiDexApplication"> 
     ... 
    </application> 
</manifest> 

Lưu ý: Nếu ứng dụng của bạn đã mở rộng lớp Ứng dụng, bạn có thể ghi đè phương thức attachBaseContext() và gọi cho MultiDe x.install (this) để kích hoạt multidex. Để biết thêm thông tin, hãy xem tài liệu tham khảo MultiDexApplication.

@Override 
protected void attachBaseContext(Context context) { 
    super.attachBaseContext(context); 
    MultiDex.install(this); 
} 

Một lần nữa, xem hướng dẫn ở trên để biết thêm thông tin ...

Hope this helps

+0

Hỗ trợ multidex phải làm gì với lỗi "android.support.v4.app.NavUtilsJB NoClassDefFoundError"? –

+0

multidex được bật trong câu hỏi của Alpha. tôi tin rằng nếu bạn không thiết lập các văn bản như tôi đã cho thấy các Dex khác sẽ không được tải và do đó hệ thống sẽ không tìm thấy các lớp nhất định. – Sam

+2

Cảm ơn chúa ơi, điều này giúp tôi! – govo

4

Được mắc kẹt trong nhiều giờ do vấn đề này nhưng cuối cùng có những giải pháp.

BướC# 1:

dependencies { 
compile 'com.android.support:multidex:1.0.0' 
} 

BướC# 2:

defaultConfig { 
     multiDexEnabled true 
    } 

BướC# 3:

public class AppController extends Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     MultiDex.install(this); 
    } 
} 

Chúc mừng mã hóa!

3

giải pháp sau làm việc cho tôi:

  1. Thêm multiDexEnabled = true trong bạn default Config

  2. Thêm biên dịch trong phụ thuộc của bạn

  3. Application class extend MultiDexApplication thay vì chỉ Application

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