Привет. Я пытаюсь отладить сбой приложения Android, устаревшего приложения для Android, над которым я работаю. До сих пор мне удалось скомпилировать отладочный бинарный файл для приложения Jython Interpreter для Android, и я надеюсь, что кто-нибудь сможет пролить свет на это сообщение об ошибке 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();
}
Теперь я получаю следующую ошибку, пытаясь запустить это приложение из оболочки, если у меня есть идея, как мне достичь того, что я имею после
$ 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/";
Но я не уверен, что могу написать по этим путям, что я должен установить для них * ура
последнее обновление Я решил большинство своих проблем и теперь получаю оболочку, просто я получаю несколько ошибок при запуске, какие-либо идеи, как исправить эти ура
# 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)
>>>