2012-04-25 112 views
-1

可能重複:
The application has stopped unexpectedly : mrsnakey應用程序意外停止,請重試的Android

好傢伙我很新的節目,最近借的書開始的Android遊戲馬里奧Zechner。他教我如何創建一個名爲mr nom的遊戲。我遵循每條指令並將mr nom更名爲mrsnakey。

我logcat的錯誤如下:

04-25 08:37:16.422: I/Process(856): Sending signal. PID: 856 SIG: 9 
04-25 08:39:58.712: W/dalvikvm(863): Unable to resolve superclass of Lcom/zardtechnologies/mrsnakey/MrSnakey; (15) 
04-25 08:39:58.752: W/dalvikvm(863): Link of class 'Lcom/zardtechnologies/mrsnakey/MrSnakey;' failed 
04-25 08:39:58.752: D/AndroidRuntime(863): Shutting down VM 
04-25 08:39:58.752: W/dalvikvm(863): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
04-25 08:39:58.792: E/AndroidRuntime(863): FATAL EXCEPTION: main 
04-25 08:39:58.792: E/AndroidRuntime(863): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.zardtechnologies.mrsnakey/com.zardtechnologies.mrsnakey.MrSnakey}: java.lang.ClassNotFoundException: com.zardtechnologies.mrsnakey.MrSnakey in loader dalvik.system.PathClassLoader[/data/app/com.zardtechnologies.mrsnakey-2.apk] 
04-25 08:39:58.792: E/AndroidRuntime(863): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
04-25 08:39:58.792: E/AndroidRuntime(863): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
04-25 08:39:58.792: E/AndroidRuntime(863): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-25 08:39:58.792: E/AndroidRuntime(863): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-25 08:39:58.792: E/AndroidRuntime(863): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-25 08:39:58.792: E/AndroidRuntime(863): at android.os.Looper.loop(Looper.java:123) 
04-25 08:39:58.792: E/AndroidRuntime(863): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-25 08:39:58.792: E/AndroidRuntime(863): at java.lang.reflect.Method.invokeNative(Native Method) 
04-25 08:39:58.792: E/AndroidRuntime(863): at java.lang.reflect.Method.invoke(Method.java:521) 
04-25 08:39:58.792: E/AndroidRuntime(863): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-25 08:39:58.792: E/AndroidRuntime(863): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-25 08:39:58.792: E/AndroidRuntime(863): at dalvik.system.NativeStart.main(Native Method) 
04-25 08:39:58.792: E/AndroidRuntime(863): Caused by: java.lang.ClassNotFoundException: com.zardtechnologies.mrsnakey.MrSnakey in loader dalvik.system.PathClassLoader[/data/app/com.zardtechnologies.mrsnakey-2.apk] 
04-25 08:39:58.792: E/AndroidRuntime(863): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
04-25 08:39:58.792: E/AndroidRuntime(863): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
04-25 08:39:58.792: E/AndroidRuntime(863): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
04-25 08:39:58.792: E/AndroidRuntime(863): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
04-25 08:39:58.792: E/AndroidRuntime(863): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
04-25 08:39:58.792: E/AndroidRuntime(863): ... 11 more 

我的清單是在這裏:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.zardtechnologies.mrsnakey" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <application 
     android:debuggable="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="Mr.Snakey" > 
     <activity 
      android:name=".MrSnakey" 
      android:configChanges="keyboard|keyboardHidden|orientation" 
      android:label="Mr.Snakey" 
      android:screenOrientation="portrait" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <uses-sdk 
     android:minSdkVersion="3" 
     android:targetSdkVersion="12" /> 

</manifest> 

我的活動就在這裏:

package com.zardtechnologies.mrsnakey; 

import com.zardapps.framework.Screen; 
import com.zardtechnologies.androidgames.framework.impl.AndroidGame; 

public class MrSnakey extends AndroidGame { 

    public Screen getStartScreen() { 
     return new LoadingScreen(this); 
    } 




} 

我AndroidGame文件

package com.zardtechnologies.androidgames.framework.impl; 

import android.app.Activity; 
import android.content.Context; 
import android.content.res.Configuration; 
import android.graphics.Bitmap; 
import android.graphics.Bitmap.Config; 
import android.os.Bundle; 
import android.os.PowerManager; 
import android.os.PowerManager.WakeLock; 
import android.view.Window; 
import android.view.WindowManager; 

import com.zardapps.framework.Audio; 
import com.zardapps.framework.FileIO; 
import com.zardapps.framework.Game; 
import com.zardapps.framework.Graphics; 
import com.zardapps.framework.Input; 
import com.zardapps.framework.Screen; 

public abstract class AndroidGame extends Activity implements Game { 
    AndroidFastRenderView renderView; 
    Graphics graphics; 
    Audio audio; 
    Input input; 
    FileIO fileIO; 
    Screen screen; 
    WakeLock wakeLock; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; 
     int frameBufferWidth = isLandscape ? 480 : 320; 
     int frameBufferHeight = isLandscape ? 320 : 480; 
     Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth, 
       frameBufferHeight, Config.RGB_565); 

     float scaleX = (float) frameBufferWidth 
       /getWindowManager().getDefaultDisplay().getWidth(); 
     float scaleY = (float) frameBufferHeight 
       /getWindowManager().getDefaultDisplay().getHeight(); 

     renderView = new AndroidFastRenderView(this, frameBuffer); 
     graphics = new AndroidGraphics(getAssets(), frameBuffer); 
     fileIO = new AndroidFileIO(getAssets()); 
     audio = new AndroidAudio(this); 
     input = new AndroidInput(this, renderView, scaleX, scaleY); 
     screen = getStartScreen(); 
     setContentView(renderView); 

     PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
     wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, 
       "GLGAME"); 

    } 

    public void onResume() { 
     super.onResume(); 
     wakeLock.acquire(); 
     screen.resume(); 
     renderView.resume(); 
    } 

    public void onPause() { 
     super.onPause(); 
     wakeLock.release(); 
     renderView.pause(); 
     screen.pause(); 

     if (isFinishing()) 
      screen.dispose(); 
    } 

    public Input getInput() { 
     return input; 
    } 

    public FileIO getFileIO() { 
     return fileIO; 
    } 

    public Graphics getGraphics() { 
     return graphics; 
    } 

    public Audio getAudio() { 
     return audio; 
    } 

    public void setScreen(Screen screen) { 
     if (screen == null) 
      throw new IllegalArgumentException("Screen must not be null"); 
     this.screen.pause(); 
     this.screen.dispose(); 
     screen.resume(); 
     screen.update(0); 
     this.screen = screen; 
    } 

    public Screen getCurrentScreen() { 
     return screen; 
    } 
} 

哦另注我在網上搜索,很多人來調試。我調試它說,我得到了這一點:

Mr.Snakey [Android Application] 
    DalvikVM[localhost:8631]  
     Thread [<1> main] (Suspended (exception RuntimeException)) 
      ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2585 
      ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2679 
      ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 125 
      ActivityThread$H.handleMessage(Message) line: 2033 
      ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
      Looper.loop() line: 123 
      ActivityThread.main(String[]) line: 4627  
      Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] 
      Method.invoke(Object, Object...) line: 521 
      ZygoteInit$MethodAndArgsCaller.run() line: 868 
      ZygoteInit.main(String[]) line: 626 
      NativeStart.main(String[]) line: not available [native method] 
     Thread [<6> Binder Thread #2] (Running) 
     Thread [<5> Binder Thread #1] (Running) 

如何閱讀這個任何提示?只有

Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] 

       ActivityThread$H(Handler).dispatchMessage(Message) line: 99 

只有這給了我一個盒子,上面寫着「附加來源」

感謝您的閱讀! 欣賞給予任何幫助:)

+0

您錯過了com.zardtechnologies.mrsnakey.MrSnakey這個類,您確定它包含在構建的.apk中嗎? – azertiti 2012-04-25 15:40:52

+0

是的,我有一個MrSnakey.java文件它的類 – 2012-04-25 15:43:31

+0

是你的MrSnakey.java文件在源代碼樹的com.zardtechnologies.mrsnakey包,因爲我看到你的主要活動是在com.zardtechnologies.androidgames.framework.impl – Idistic 2012-04-25 15:49:36

回答

0
Unable to resolve superclass of Lcom/zardtechnologies/mrsnakey/MrSnakey; (15) 

這就是爲什麼你的應用程序失敗的關鍵的事情。

我建議將AndroidGame和Game這兩個類與MrSnakey(com.zardtechnologies.mrsnakey)放在同一個包中,然後嘗試。一些Dalvik在加載MrSnakey時無法連接你的超類。

+0

我如何將兩個類都移動到同一個包中?初學者在這裏; X – 2012-04-25 15:47:52

+0

將這些類複製到mrsnakey包並從現有包中刪除它們。備份你的工作。 – kosa 2012-04-25 15:49:28

+0

我複製,但我仍然收到錯誤 – 2012-04-25 15:58:06