2011-04-11 143 views
2

你好我試圖調試Android應用程序的崩潰過時的Android應用程序,我一直在努力。該應用程序是Jython解釋爲Android到目前爲止,我已經成功地編譯調試二進制,我希望有人能闡明logcat中的此錯誤消息的一些光謝謝調試Android應用程序崩潰

I/ActivityManager( 51): Starting activity: Intent { act=android.intent.action. 
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.python.util/. 
Jythonroid } 
I/ActivityManager( 51): Start proc org.python.util for activity org.python.uti 
l/.Jythonroid: pid=190 uid=10028 gids={1015} 
D/dalvikvm( 30): GC freed 284 objects/10864 bytes in 318ms 
D/dalvikvm( 30): GC freed 50 objects/2216 bytes in 117ms 
D/dalvikvm( 30): GC freed 2 objects/48 bytes in 96ms 
D/dalvikvm( 51): GC freed 13347 objects/617528 bytes in 195ms 
I/ARMAssembler( 51): generated scanline__00000177:03515104_00000001_00000000 [ 
73 ipp] (95 ins) at [0x4c0640:0x4c07bc] in 894130 ns 
I/ARMAssembler( 51): generated scanline__00000077:03545404_00000004_00000000 [ 
47 ipp] (67 ins) at [0x4c19b0:0x4c1abc] in 640894 ns 
D/AndroidRuntime( 190): Shutting down VM 
W/dalvikvm( 190): threadid=3: thread exiting with uncaught exception (group=0x4 
001b188) 
E/AndroidRuntime( 190): Uncaught handler: thread main exiting due to uncaught e 
xception 
E/AndroidRuntime( 190): java.lang.RuntimeException: Unable to start activity Co 
mponentInfo{org.python.util/org.python.util.Jythonroid}: java.lang.IllegalStateE 
xception: The specified child already has a parent. You must call removeView() o 
n the child's parent first. 
E/AndroidRuntime( 190):  at android.app.ActivityThread.performLaunchActiv 
ity(ActivityThread.java:2496) 
E/AndroidRuntime( 190):  at android.app.ActivityThread.handleLaunchActivi 
ty(ActivityThread.java:2512) 
E/AndroidRuntime( 190):  at android.app.ActivityThread.access$2200(Activi 
tyThread.java:119) 
E/AndroidRuntime( 190):  at android.app.ActivityThread$H.handleMessage(Ac 
tivityThread.java:1863) 
E/AndroidRuntime( 190):  at android.os.Handler.dispatchMessage(Handler.ja 
va:99) 
E/AndroidRuntime( 190):  at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime( 190):  at android.app.ActivityThread.main(ActivityThrea 
d.java:4363) 
E/AndroidRuntime( 190):  at java.lang.reflect.Method.invokeNative(Native 
Method) 
E/AndroidRuntime( 190):  at java.lang.reflect.Method.invoke(Method.java:5 
21) 
E/AndroidRuntime( 190):  at com.android.internal.os.ZygoteInit$MethodAndA 
rgsCaller.run(ZygoteInit.java:860) 
E/AndroidRuntime( 190):  at com.android.internal.os.ZygoteInit.main(Zygot 
eInit.java:618) 
E/AndroidRuntime( 190):  at dalvik.system.NativeStart.main(Native Method) 

E/AndroidRuntime( 190): Caused by: java.lang.IllegalStateException: The specifi 
ed child already has a parent. You must call removeView() on the child's parent 
first. 
E/AndroidRuntime( 190):  at android.view.ViewGroup.addViewInner(ViewGroup 
.java:1861) 
E/AndroidRuntime( 190):  at android.view.ViewGroup.addView(ViewGroup.java 
:1756) 
E/AndroidRuntime( 190):  at android.view.ViewGroup.addView(ViewGroup.java 
:1736) 
E/AndroidRuntime( 190):  at com.android.internal.policy.impl.PhoneWindow. 
setContentView(PhoneWindow.java:217) 
E/AndroidRuntime( 190):  at com.android.internal.policy.impl.PhoneWindow. 
setContentView(PhoneWindow.java:207) 
E/AndroidRuntime( 190):  at android.app.Activity.setContentView(Activity. 
java:1633) 
E/AndroidRuntime( 190):  at org.python.util.Jythonroid.onCreate(Jythonroi 
d.java:251) 
E/AndroidRuntime( 190):  at android.app.Instrumentation.callActivityOnCre 
ate(Instrumentation.java:1047) 
E/AndroidRuntime( 190):  at android.app.ActivityThread.performLaunchActiv 
ity(ActivityThread.java:2459) 
E/AndroidRuntime( 190):  ... 11 more 
I/Process ( 51): Sending signal. PID: 190 SIG: 3 
I/dalvikvm( 190): threadid=7: reacting to signal 3 
E/dalvikvm( 190): Unable to open stack trace file '/data/anr/traces.txt': Permi 
ssion denied 
I/ARMAssembler( 51): generated scanline__00000077:03515104_00000000_00000000 [ 
33 ipp] (47 ins) at [0x4c1ac0:0x4c1b7c] in 405177 ns 
I/ARMAssembler( 51): generated scanline__00000177:03515104_00001001_00000000 [ 
91 ipp] (114 ins) at [0x492b80:0x492d48] in 494049 ns 
W/ActivityManager( 51): Launch timeout has expired, giving up wake lock! 
W/ActivityManager( 51): Activity idle timeout for HistoryRecord{43db26a8 org.p 
ython.util/.Jythonroid} 
D/dalvikvm( 97): GC freed 965 objects/44888 bytes in 164ms 
I/Process ( 190): Sending signal. PID: 190 SIG: 9 
I/ActivityManager( 51): Process org.python.util (pid 190) has died. 
I/UsageStats( 51): Unexpected resume of com.android.launcher while already res 
umed in org.python.util 
W/InputManagerService( 51): Window already focused, ignoring focus gain of: co 
[email protected] 
E/gralloc ( 51): [unregister] handle 0x3d0690 still locked (state=40000001) 

下面是onCreate方法

歡呼

下面是onCreate方法

/** 
* provide an interactive shell in the screen 
*/ 
@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main); 
    shell = (EditText) findViewById(R.id.shell); 
    //  shell=new ShellEditer(this, null, null); 
    setContentView(shell); 
    shell.setEnabled(false); 
    initializeShell(shell); 
    Handler hd = new Handler() { 
     public void handleMessage(Message msg) { 
      if (msg.getData().containsKey("initial")) { 
       alert("initialized"); 
       shell.setEnabled(true); 
      } else { 
       shell.append("\n"+(String) msg.getData().get("result")); 
      } 
     } 
    }; 
    //running the backend 
    new Thread(new Runnable() { 
     public void run() { 
      try { 
       Runtime.getRuntime().exec(
         "dalvikvm -classpath " 
           + "/data/app/Jythonroid.apk " 
           + "org.python.util.JythonServer"); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, "JythonServer").start(); 
    shellclient = new ShellClient(this, hd); 
    new Thread(shellclient).start(); 
} 

現在我收到以下錯誤試圖從shell中運行這個程序,任何想法如何我可以達到我以後的樣子

$ dalvikvm -classpath org.python.util.apk org.python.util.jython 
dalvikvm -classpath org.python.util.apk org.python.util.jython 
Dalvik VM unable to locate class 'org/python/util/jython' 
java.lang.NoClassDefFoundError: org.python.util.jython 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: org.python.util.jython in loader da 
[email protected] 
     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
     ... 1 more 
$ 

看來它找不到路徑,老實說我不知道​​它在哪裏。在我的項目的FixMe.java文件我將它設置爲

public static String apkpath = "/data/app"; 
public static String apkname = "org.python.util.apk"; 
public static String apppath = apkpath + apkname; 
public static String tmpdirpath = "/data/jythonroid/"; 

但我不確定,我可以寫我應該怎麼設置那些*歡呼聲

最後一次更新我解決我的大部分問題,這些路徑現在得到一個shell只是我得到了一些錯誤運行它時,任何想法如何解決這些歡呼聲

# dalvikvm -classpath /data/app/org.python.util.apk org.python.util.jython 
dalvikvm -classpath /data/app/org.python.util.apk org.python.util.jython 
Jython 2.2.1 on java0 
Apr 11, 2011 7:40:14 PM java.io.BufferedReader <init> 
INFO: Default buffer size used in BufferedReader constructor. It would be better 
to be explicit if an 8k-char buffer is required. 
java.io.IOException: unable to open DEX file 
     at dalvik.system.DexFile.openDexFile(Native Method) 
     at dalvik.system.DexFile.<init>(DexFile.java:82) 
     at dalvik.system.DexFile.<init>(DexFile.java:57) 
     at org.python.debug.FixMe.getClassByName(FixMe.java:104) 
     at org.python.debug.FixMe.getDexClass(FixMe.java:356) 
     at org.python.core.BytecodeLoader2.loadClassFromBytes(BytecodeLoader2.ja 
va:44) 
     at org.python.core.BytecodeLoader.makeClass(BytecodeLoader.java:92) 
     at org.python.core.BytecodeLoader.makeCode(BytecodeLoader.java:103) 
     at org.python.core.Py.compile_flags(Py.java:1685) 
     at org.python.core.Py.compile_flags(Py.java:1698) 
     at org.python.core.Py.compile_flags(Py.java:1706) 
     at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:135) 
     at org.python.util.InteractiveConsole.interact(InteractiveConsole.java:7 
3) 
     at org.python.util.jython.main(jython.java:251) 
     at dalvik.system.NativeStart.main(Native Method) 
java.io.IOException: unable to open DEX file 
     at dalvik.system.DexFile.openDexFile(Native Method) 
     at dalvik.system.DexFile.<init>(DexFile.java:82) 
     at dalvik.system.DexFile.<init>(DexFile.java:57) 
     at org.python.debug.FixMe.getClassByName(FixMe.java:104) 
     at org.python.debug.FixMe.getDexClass(FixMe.java:357) 
     at org.python.core.BytecodeLoader2.loadClassFromBytes(BytecodeLoader2.ja 
va:44) 
     at org.python.core.BytecodeLoader.makeClass(BytecodeLoader.java:92) 
     at org.python.core.BytecodeLoader.makeCode(BytecodeLoader.java:103) 
     at org.python.core.Py.compile_flags(Py.java:1685) 
     at org.python.core.Py.compile_flags(Py.java:1698) 
     at org.python.core.Py.compile_flags(Py.java:1706) 
     at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:135) 
     at org.python.util.InteractiveConsole.interact(InteractiveConsole.java:7 
3) 
     at org.python.util.jython.main(jython.java:251) 
     at dalvik.system.NativeStart.main(Native Method) 
java.io.IOException: unable to open DEX file 
     at dalvik.system.DexFile.openDexFile(Native Method) 
     at dalvik.system.DexFile.<init>(DexFile.java:82) 
     at dalvik.system.DexFile.<init>(DexFile.java:57) 
     at org.python.debug.FixMe.getClassByName(FixMe.java:104) 
     at org.python.debug.FixMe.getDexClass(FixMe.java:360) 
     at org.python.core.BytecodeLoader2.loadClassFromBytes(BytecodeLoader2.ja 
va:44) 
     at org.python.core.BytecodeLoader.makeClass(BytecodeLoader.java:92) 
     at org.python.core.BytecodeLoader.makeCode(BytecodeLoader.java:103) 
     at org.python.core.Py.compile_flags(Py.java:1685) 
     at org.python.core.Py.compile_flags(Py.java:1698) 
     at org.python.core.Py.compile_flags(Py.java:1706) 
     at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:135) 
     at org.python.util.InteractiveConsole.interact(InteractiveConsole.java:7 
3) 
     at org.python.util.jython.main(jython.java:251) 
     at dalvik.system.NativeStart.main(Native Method) 
>>> 

回答

0

一個問題看起來像要添加子視圖另一種觀點 - 但子視圖已添加。您是否動態添加視圖或構建佈局? E/AndroidRuntime( 190): at org.python.util.Jythonroid.onCreate(Jythonroi d.java:251)

+0

通過onCreate方法的外觀,它看起來像我創造了殼視圖。 感謝您的幫助,我不是專家在Java的只是想通過這個砍我的方式。 歡呼 ,如果你願意看看 – cheer10s 2011-04-11 13:30:33

0

這一呼籲似乎是格格不入

setContentView(shell); 

我假設R.id.shell是在主XML,因爲否則你不能做到這一點:

setContentView(R.layout.main); 
shell = (EditText) findViewById(R.id.shell); 

如果這是正確的,沒有理由的setContentView,因爲它是在媒體鏈接你剛纔設置的主。

+0

,不要忘了我已經加入了onCreate方法在原來的職位編輯:調用'的setContentView()'只有一次! – WarrenFaith 2011-04-11 13:39:11

+0

這是有道理的應用程序現在運行...只是要弄清楚如何運行從我的電腦上的shell腳本,因爲在應用程序本身*歡呼 – cheer10s 2011-04-11 15:01:47

+0

沒有界面我剛剛更新我的職務與你新的錯誤對如何解決這個問題有很好的建議*歡呼聲 – cheer10s 2011-04-11 17:01:47