>

이것은 android studio 1.0.2로 얻은 내 오류 로그입니다

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)

구성

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

이 오류를 해결하는 방법? gradlew clean 도움이되지 않습니다. 빌드 폴더 삭제도 작동하지 않습니다. 컴파일하는 동안 Android 스튜디오에서 오류가 표시되지 않습니다.

  • 답변 # 1

    이 문제가 있었고 방금 해결책을 찾았습니다. 대답은 RTFM입니다! 지침은 다음과 같습니다. https://developer.android.com/tools/building/multidex.html

    멀티 덱싱은 새로운 기능이므로 롤리팝 이전 장치와 호환되도록 지원 라이브러리가 필요합니다. gradle 파일 종속성에 다음을 추가해야합니다.

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

    또한 gradle 파일에서 멀티 덱스 출력을 활성화하십시오 :

    android {
        compileSdkVersion 21
        buildToolsVersion "21.1.0"
        defaultConfig {
            ...
            minSdkVersion 14
            targetSdkVersion 21
            ...
            // Enabling multidex support.
            multiDexEnabled true
        }
    }
    
    

    그리고 매니페스트에 멀티 덱스 지원 응용 프로그램을 추가하십시오 :

    <?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>
    
    

    참고 :앱이 이미 Application 클래스를 확장하는 경우 attachBaseContext () 메서드를 재정의하고 MultiDex.install (this)을 호출하여 멀티 덱스를 활성화 할 수 있습니다. 자세한 정보는 MultiDexApplication 를 참조하십시오.  참조 문서.

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

    자세한 내용은 위의 지침을 참조하십시오 ...

    이것이 도움이되기를 바랍니다

  • 답변 # 2

    이 문제로 인해 몇 시간 동안 멈추었지만 마침내 해결책을 얻었습니다.

    1 단계 :

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

    2 단계 :

    defaultConfig {
            multiDexEnabled true
        }
    
    

    3 단계 :

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

    행복한 코딩!

  • 답변 # 3

    다음 솔루션이 저에게 효과적이었습니다 :

    <올>

    multiDexEnabled = true 추가  당신의 default Config 에서

    컴파일 com.android.support:multidex:1.0.0 추가  당신의 의존성에서

    Application class extend MultiDexApplication  그냥 Application 대신

  • 답변 # 4

    이 경우 "support-v4"lib를 19에서 24 버전으로 업데이트 할 때이 오류가 발생했습니다.

    버전 19에는NavUtilsJB클래스가 포함되어 있습니다 :

    그러나 버전 24에는NavUtilsJB클래스가 포함되어 있지 않습니다 :

    이 문제에 대한 해결책은 프로젝트 내에서NavUtilsJB클래스를 만드는 것입니다 :

    package android.support.v4.app;
    import android.app.Activity;
    import android.content.Intent;
    import android.content.pm.ActivityInfo;
    class NavUtilsJB {
        public static Intent getParentActivityIntent(Activity activity) {
            return activity.getParentActivityIntent();
        }
        public static boolean shouldUpRecreateTask(Activity activity, Intent targetIntent) {
            return activity.shouldUpRecreateTask(targetIntent);
        }
        public static void navigateUpTo(Activity activity, Intent upIntent) {
            activity.navigateUpTo(upIntent);
        }
        public static String getParentActivityName(ActivityInfo info) {
            return info.parentActivityName;
        }
    }
    
    

관련 자료

  • 이전 send와 instance_eval의 루비 차이?
  • 다음 javascript - 지구본을위한 다각형 삼각 분할