Как запустить код Android в REPL - PullRequest
4 голосов
/ 15 февраля 2012

У меня есть приложение для Android с большим количеством общения.Я хотел бы запустить код для Android внутри REPL, для разработки, отладки и т. Д.

вот так

HttpClient client = new DefaultHttpClient();
print(client.execute(new HttpGet("some url"), new BasicResponseHandler()));

, таким образом я могу видеть свои изменения очень быстро, без запуска на телефоне илиэмулятор.

Я пытался добавить android.jar в beanshell, но это не сработало.

1 Ответ

6 голосов
/ 23 февраля 2012

Вы не сможете запускать классы, являющиеся частью платформы Android (например, HttpClient) в REPL, поскольку все методы в android.jar являются заглушками. Реальная реализация этих методов находится на вашем телефоне или эмуляторе, так что вам придется запускать эмулятор как минимум.

См. В результате вызова Apache DefaultHttpClient для получения более подробной информации выдается сообщение «java.lang.RuntimeException: Stub!» .

Например, если вы запустите код, который вы разместили в REPL, вы получите RuntimeException, похожую на следующую:

java.lang.RuntimeException: Stub!
    at org.apache.http.impl.client.AbstractHttpClient.<init>(AbstractHttpClient.java:5)
    at org.apache.http.impl.client.DefaultHttpClient.<init>(DefaultHttpClient.java:7)
    at CodeSnippet_10.run(CodeSnippet_10.java:7)
    at org.eclipse.jdt.internal.debug.ui.snippeteditor.ScrapbookMain1.eval(ScrapbookMain1.java:20)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.eclipse.jdt.internal.debug.ui.snippeteditor.ScrapbookMain.evalLoop(ScrapbookMain.java:54)
    at org.eclipse.jdt.internal.debug.ui.snippeteditor.ScrapbookMain.main(ScrapbookMain.java:35)

Если вы хотите проверить это на собственном опыте, создайте новый проект Java в Eclipse, а затем создайте новую страницу записок в своем проекте (File > New > Other... > Java Run/Debug > Scrapbook Page). Добавьте android.jar к пути сборки проекта, затем щелкните правой кнопкой мыши страницу альбома, выберите Set Imports и импортируйте пакет org.apache.http.*. При выполнении фрагмента (Ctrl + U) вы получите исключение, подобное тому, которое я опубликовал выше.

...