2015-06-18 61 views
1

我在eclipse中有一個現有的andengine項目,我將其遷移到Android Studio。 Gradle顯示沒有錯誤,我能夠成功構建apk。但是,無論何時我在手機上打開/運行apk,都會在開始時崩潰,並提到錯誤。我通過閱讀這裏和那裏嘗試了很多隨機的東西,但一直沒有能夠理解這個問題。致命異常:main java.lang.NoClassDefFoundError:org.andengine.engine.options.SoundOptions

下面是我從logcat中得到的詳細錯誤。我可以注意到的是FATAL EXCEPTION:main java.lang.NoClassDefFoundError:org.andengine.engine.options.SoundOptions

因此,不知何故,andengine在運行時沒有找到SoundOptions和其他類。

這是我的代碼onCreateEngineOptions它顯示崩潰。請讓我知道你是否需要我身邊的其他東西。

@Override 
    public EngineOptions onCreateEngineOptions() { 
     abc(); 
     prefs = this.getSharedPreferences(
       "MY_PACKAGE", Context.MODE_PRIVATE); 
     camera = new FollowCamera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 
     EngineOptions engineOption = new EngineOptions(true, ScreenOrientation.PORTRAIT_FIXED, new FillResolutionPolicy(), camera); 
     engineOption.getAudioOptions().setNeedsMusic(true); 
     engineOption.getAudioOptions().setNeedsSound(true); 
     engineOption.getRenderOptions().getConfigChooserOptions().setRequestedMultiSampling(true); 
     engineOption.setWakeLockOptions(WakeLockOptions.SCREEN_ON); 
     engineOption.getTouchOptions().setNeedsMultiTouch(true); 
     return engineOption; 
    } 

這裏是我的build.gradle(模塊:APP)

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion '22.0.1' 
    defaultConfig { 
     applicationId "MY_PACKAGE" 
     minSdkVersion 9 
     targetSdkVersion 22 
     multiDexEnabled true 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    sourceSets.main { 
     jniLibs.srcDir 'src/main/libs' 
     jni.srcDirs = [] //disable automatic ndk-build call 
    } 
    productFlavors { 
    } 
} 
repositories { 
    mavenCentral() 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.2.0' 
    compile 'com.google.android.gms:play-services:7.5.0' 
    compile project(':BaseGameUtils') 
    compile project(':facebook') 
    compile project(':AndEngine') 
    compile project(':andEnginePhysicsBox2D') 
} 

日誌:

06-18 16:22:03.761 14042-14042/? E/NetworkScheduler.SchedulerReceiver﹕ Invalid parameter app 
06-18 16:22:03.771 14042-14042/? E/NetworkScheduler.SchedulerReceiver﹕ Invalid package name : Perhaps you didn't include a PendingIntent in the extras? 
06-18 16:22:05.453 4974-4974/? E/dalvikvm﹕ Could not find class 'android.app.Notification$Action$Builder', referenced from method b.a 
06-18 16:22:05.623 4974-4974/? E/dalvikvm﹕ Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method b.a 
06-18 16:22:06.033 4974-4974/? E/dalvikvm﹕ Could not find class 'android.app.Notification$Action$Builder', referenced from method b.a 
06-18 16:22:06.133 4974-4974/? E/dalvikvm﹕ Could not find class 'android.transition.Transition', referenced from method b.a 
06-18 16:22:06.133 4974-4974/? E/dalvikvm﹕ Could not find class 'android.transition.Transition', referenced from method b.a 
06-18 16:22:06.143 4974-4974/? E/dalvikvm﹕ Could not find class 'android.transition.Transition', referenced from method b.a 
06-18 16:22:06.334 4974-4974/? E/dalvikvm﹕ Could not find class 'android.app.RemoteInput[]', referenced from method b.a 
06-18 16:22:06.394 4974-4974/? E/dalvikvm﹕ Could not find class 'android.transition.Transition', referenced from method b.b 
06-18 16:22:14.932 5041-5148/MY_PACKAGE E/dalvikvm﹕ Could not find class 'android.app.AppOpsManager', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zza 
06-18 16:22:14.962 5041-5148/MY_PACKAGE E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included. 
06-18 16:22:15.022 5041-5148/MY_PACKAGE E/dalvikvm﹕ Could not find class 'com.google.android.gms.ads.identifier.AdvertisingIdClient$zza', referenced from method com.google.android.gms.ads.identifier.AdvertisingIdClient.zzaJ 
06-18 16:22:15.052 5041-5148/MY_PACKAGE E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included. 
06-18 16:22:15.282 5041-5041/MY_PACKAGE E/dalvikvm﹕ Could not find class 'org.andengine.engine.handler.UpdateHandlerList', referenced from method org.andengine.engine.camera.Camera.allocateUpdateHandlers 
06-18 16:22:15.613 5041-5041/MY_PACKAGE E/dalvikvm﹕ Could not find class 'org.andengine.engine.options.SoundOptions', referenced from method org.andengine.engine.options.AudioOptions.<init> 
06-18 16:22:15.793 5041-5041/MY_PACKAGE E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.NoClassDefFoundError: org.andengine.engine.options.SoundOptions 
      at org.andengine.engine.options.AudioOptions.<init>(AudioOptions.java:18) 
      at org.andengine.engine.options.EngineOptions.<init>(EngineOptions.java:32) 
      at MY_PACKAGE.GameActivity.onCreateEngineOptions(GameActivity.java:209) 
      at org.andengine.ui.activity.BaseGameActivity.onCreate(BaseGameActivity.java:82) 
      at MY_PACKAGE.GameActivity.onCreate(GameActivity.java:289) 
      at android.app.Activity.performCreate(Activity.java:4538) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2240) 
      at android.app.ActivityThread.access$600(ActivityThread.java:139) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:156) 
      at android.app.ActivityThread.main(ActivityThread.java:4987) 
      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:784) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
      at dalvik.system.NativeStart.main(Native Method) 
06-18 16:22:15.843 1601-5647/? E/EmbeddedLogger﹕ App crashed! Process: MY_PACKAGE 
06-18 16:22:15.843 1601-5647/? E/EmbeddedLogger﹕ App crashed! Package: MY_PACKAGE v1 (1.0) 
06-18 16:22:15.843 1601-5647/? E/EmbeddedLogger﹕ Application Label: MY_APP_LABEL 
+0

請出示您的build.gradle(模塊:APP)... – AndroidLad

+0

@ohm更新,其中的build.gradle –

回答

1

貴項目達到65K +方法(DEX限制)?您似乎在build.gradle中啓用了multidex。但是這樣做不足以支持multidex,所以您需要在您的Application類中擴展MultidexApplication

public class YourApplication extends MultiDexApplication { 

. 

. 

還需要指定依賴於multidex LIB中的build.gradle

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

你有沒有這樣做呢?

欲瞭解更多信息,你可以參考這個文檔 https://developer.android.com/tools/building/multidex.html

+0

大量的「找不到從ABC引用的類XYZ」的問題後,就像 找不到類'android.app.AppOpsManager',從方法com.google.android.gms.common.GooglePlayServicesUtil.zza –

+0

引用'clean'該項目一次並檢查。 –

+0

做了多次。 –

1

這個問題可以從multiDex功能到來。禁用它,並嘗試減少項目中的方法數量。谷歌播放服務已經有了很多,你可以嘗試使用更細粒度的庫(例如分割成更小的模塊,並只使用你真正需要的)。金正日將帶你約30秒,以下this guide

+0

已禁用multiDex並將Google Play服務分成更小的必需模塊,但工作室在嘗試運行該項目時向我顯示了multidex問題。 *發生了什麼問題: 任務':app:dexDebug'的執行失敗。 > com.android.ide.common.process.ProcessException:org.gradle.process.internal。ExecException:進程'命令'/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java''以非零退出值結束2 *嘗試: 使用--stacktrace選項運行獲取堆棧跟蹤。使用--info或--debug選項運行以獲取更多日誌輸出。 –

+0

還是一樣的錯誤?如果不一樣,請發帖。 – webo80

+0

這是第一個錯誤,因爲我啓用了multidex。 –

相關問題