Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调试Android应用程序崩溃_Java_Python_Android_Jython - Fatal编程技术网

Java 调试Android应用程序崩溃

Java 调试Android应用程序崩溃,java,python,android,jython,Java,Python,Android,Jython,你好,我正在调试一个Android应用程序的崩溃,一个我一直在开发的过时的Android应用程序。该应用程序是Android的Jython解释器,到目前为止,我已经成功地编译了一个调试二进制文件,希望有人能解释一下logcat的错误消息谢谢 I/ActivityManager( 51): Starting activity: Intent { act=android.intent.action. MAIN cat=[android.intent.category.LAUNCHER] flg=

你好,我正在调试一个Android应用程序的崩溃,一个我一直在开发的过时的Android应用程序。该应用程序是Android的Jython解释器,到目前为止,我已经成功地编译了一个调试二进制文件,希望有人能解释一下logcat的错误消息谢谢

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
m.android.internal.view.IInputMethodClient$Stub$Proxy@43c6ef58
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
lvik.system.PathClassLoader@4001e590
        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)
>>>
#dalvikvm-classpath/data/app/org.python.util.apk org.python.util.jython
dalvikvm-classpath/data/app/org.python.util.apk org.python.util.jython
java0上的Jython 2.2.1
2011年4月11日晚上7:40:14 java.io.BufferedReader
信息:BufferedReader构造函数中使用的默认缓冲区大小。那会更好
如果需要8k字符缓冲区,则为显式。
java.io.IOException:无法打开DEX文件
位于dalvik.system.DexFile.openDexFile(本机方法)
位于dalvik.system.DexFile.(DexFile.java:82)
位于dalvik.system.DexFile.(DexFile.java:57)
位于org.python.debug.FixMe.getClassByName(FixMe.java:104)
位于org.python.debug.FixMe.getDexClass(FixMe.java:356)
位于org.python.core.BytecodeLoader2.loadClassFromBytes(BytecodeLoader2.ja
弗吉尼亚州:44)
位于org.python.core.BytecodeLoader.makeClass(BytecodeLoader.java:92)
位于org.python.core.BytecodeLoader.makeCode(BytecodeLoader.java:103)
在org.python.core.Py.compile_标志处(Py.java:1685)
位于org.python.core.Py.compile_标志(Py.java:1698)
在org.python.core.Py.compile_标志处(Py.java:1706)
位于org.python.util.PythonInterpreter.exec(PythonInterpreter.java:135)
位于org.python.util.InteractiveConsole.interactive(InteractiveConsole.java:7
3)
位于org.python.util.jython.main(jython.java:251)
在dalvik.system.NativeStart.main(本机方法)
java.io.IOException:无法打开DEX文件
位于dalvik.system.DexFile.openDexFile(本机方法)
位于dalvik.system.DexFile.(DexFile.java:82)
位于dalvik.system.DexFile.(DexFile.java:57)
位于org.python.debug.FixMe.getClassByName(FixMe.java:104)
位于org.python.debug.FixMe.getDexClass(FixMe.java:357)
位于org.python.core.BytecodeLoader2.loadClassFromBytes(BytecodeLoader2.ja
弗吉尼亚州:44)
位于org.python.core.BytecodeLoader.makeClass(BytecodeLoader.java:92)
位于org.python.core.BytecodeLoader.makeCode(BytecodeLoader.java:103)
在org.python.core.Py.compile_标志处(Py.java:1685)
位于org.python.core.Py.compile_标志(Py.java:1698)
在org.python.core.Py.compile_标志处(Py.java:1706)
位于org.python.util.PythonInterpreter.exec(PythonInterpreter.java:135)
位于org.python.util.InteractiveConsole.interactive(InteractiveConsole.java:7
3)
位于org.python.util.jython.main(jython.java:251)
在dalvik.system.NativeStart.main(本机方法)
java.io.IOException:无法打开DEX文件
位于dalvik.system.DexFile.openDexFile(本机方法)
位于dalvik.system.DexFile.(DexFile.java:82)
位于dalvik.system.DexFile.(DexFile.java:57)
位于org.python.debug.FixMe.getClassByName(FixMe.java:104)
位于org.python.debug.FixMe.getDexClass(FixMe.java:360)
位于org.python.core.BytecodeLoader2.loadClassFromBytes(BytecodeLoader2.ja
弗吉尼亚州:44)
位于org.python.core.BytecodeLoader.makeClass(BytecodeLoader.java:92)
位于org.python.core.BytecodeLoader.makeCode(BytecodeLoader.java:103)
在org.python.core.Py.compile_标志处(Py.java:1685)
位于org.python.core.Py.compile_标志(Py.java:1698)
在org.python.core.Py.compile_标志处(Py.java:1706)
位于org.python.util.PythonInterpreter.exec(PythonInterpreter.java:135)
位于org.python.util.InteractiveConsole.interactive(InteractiveConsole.java:7
3)
位于org.python.util.jython.main(jython.java:251)
在dalvik.system.NativeStart.main(本机方法)
>>>

一个问题看起来像是您正在将一个子视图添加到另一个视图,但该子视图已被添加。您是动态添加视图还是构建布局?
E/AndroidRuntime(190):位于org.python.util.Jythonroid.onCreate(Jythonroi)
d、 爪哇:251)

一个问题看起来像是您正在将一个子视图添加到另一个视图,但该子视图已被添加。您是动态添加视图还是构建布局?
E/AndroidRuntime(190):位于org.python.util.Jythonroid.onCreate(Jythonroi)
d、 爪哇:251)

这个电话似乎不合适

setContentView(shell);
我假设R.id.shell在您的主XML中,因为否则您无法执行此操作:

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

如果这是正确的,那么就没有理由使用setContentView,因为它在您刚刚设置的主视图中已准备就绪。

此调用似乎不合适

setContentView(shell);
我假设R.id.shell在您的主XML中,因为否则您无法执行此操作:

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

如果这是正确的,那么就没有理由使用setContentView,因为它在您刚刚设置的主视图中已经准备就绪。

从onCreate方法的外观来看,它看起来像是在为shell创建一个视图。谢谢你的帮助,我不是Java方面的专家,只是想通过黑客破解来解决这个问题。干杯我已经在原始帖子的编辑中添加了onCreate方法如果你想看一下的话。通过onCreate方法的外观,看起来我正在为shell创建一个视图。谢谢你的帮助,我不是Java方面的专家,只是想通过黑客破解来解决这个问题。干杯如果你想看一看并且不要忘记的话,我已经在原始帖子的编辑中添加了onCreate方法:call
setContentView()
only on