web-dev-qa-db-ja.com

Android studio Java.lang.NoClassDefFoundError:Android.support.v4.app.NavUtilsJB

これはAndroid studio1.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:21.0.3@aar'
    compile 'com.Android.support:appcompat-v7:21.0.3@aar'
    compile project(':ViewPagerIndicator')
    compile('de.keyboardsurfer.Android.widget:crouton:1.8.4@aar') {
        exclude group: 'com.google.Android', module: 'support-v4'
    }
    compile 'org.Java-websocket:Java-WebSocket:1.3.0'
}

このエラーを解決する方法は? gradlewcleanは役に立ちません。ビルドフォルダの削除も機能しません。 Android studioはコンパイル中にエラーを表示しません。

12
Alpha

私はこの問題を抱えていて、解決策を見つけました-答えはRTFMです!手順は次のとおりです。 https://developer.Android.com/tools/building/multidex.html

マルチデキシングは新機能であるため、ロリポップ以前のデバイスと互換性のあるサポートライブラリが必要です。 Gradleファイルの依存関係に以下を追加する必要があります。

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

また、gradleファイルでmultidex出力を有効にします。

Android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

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

        // Enabling multidex support.
        multiDexEnabled true
    }
}

次に、multidexサポートアプリケーションをマニフェストに追加します。

<?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)を呼び出してmultidexを有効にすることができます。詳細については、 MultiDexApplication リファレンスドキュメントを参照してください。

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

繰り返しますが、詳細については上記の手順を参照してください...

お役に立てれば

41
Sam

この問題のために何時間も立ち往生していましたが、最終的に解決策を得ました。

ステップ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);
    }
}

ハッピーコーディング!

4
Ahsanwarsi

次の解決策は私のために働いた:

  1. 追加 multiDexEnabled = trueあなたのdefault Config

  2. コンパイルを追加com.Android.support:multidex:1.0.0依存関係で

  3. Application class extend MultiDexApplicationApplicationの代わりに

3
Fred Sousa

この場合、「support-v4」ライブラリを19から24バージョンに更新したときに、このエラーが発生しました。

バージョン19にはNavUtilsJBクラスが含まれています:

enter image description here

ただし、バージョン24にはNavUtilsJBクラスが含まれていません。

enter image description here

この問題の解決策は、プロジェクト内に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;
    }
}
0
Maxim Mikhisor