Приложение Htmlunit для Android
Кто-нибудь получил HTMLUnit (или HtmlUnitDriver) для работы в приложениях Android?
Это проблема: появляется следующее сообщение об ошибке:
11-26 16:27:26.617: E/AndroidRuntime(1265): java.lang.NoClassDefFoundError: org/w3c/dom/css/CSSRule
Это то, что я сделал:. Я попытался добавить ссылки на банки, перечисленные в следующей ссылке (как в зависимости от проекта, так и в Project Transitive Dependencies - только для компиляции, исключая тестовые банки):
http://htmlunit.sourceforge.net/dependencies.html
Однако Eclipse продолжал сбой, затем я нашел несколько вопросов, говорящих, что некоторые фляги уже содержатся в Android SDK:
xalan, xercesImpl and xml-apis
HtmlUnit на Android
HttpClient
Android-программирование HtmlUnit
Итак, я удалил ссылки на эти банки, сохраняя только следующее:
commons-codec-1.4.jar
commons-collections-3.2.1.jar
commons-io-2.0.1.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
cssparser-0.9.5.jar
htmlunit-2.9.jar
htmlunit-core-js-2.9.jar
httpmime-4.1.2.jar
nekohtml-1.9.15.jar
sac-1.3.jar
httpcore-4.1.3.jar
Именно в этот момент, когда приложение удалось запустить, но когда была исполнена следующая строка кода, я начал получать ошибку:
final WebClient webClient = new WebClient();
11-26 16:27:26.617: E/AndroidRuntime(1265): java.lang.NoClassDefFoundError: org/w3c/dom/css/CSSRule
Я сделал веб-поиск и обнаружил, что xml-apis-1.3.04.jar содержит org/w3c/dom/css/CSSRule, поэтому я вернул эту ссылку к проекту, но приложение не будет создавать вообще сообщение с тем же сообщением об ошибке, описанным в первой ссылке выше:
[2011-11-26 16:39:52 - Myproj] Conversion to Dalvik format failed with error 1
Может ли кто-нибудь пролить свет на это?
Ответы
Ответ 1
xml-apis-1.3.04.jar содержит основные классы. Вы должны изменить банку и удалить эти классы.
Обратите внимание, что, по крайней мере, в текущей версии ADT вы получаете сообщение, объясняющее проблему:
Ill-advised or mistaken usage of a core class (java.* or javax.*)
when not building a core library.
Ответ 2
Так же, как ULsies заявили в комментариях, Htmlunit делает это == > HtmlUnit - это "браузер GUI-Less для Java-программ". Он моделирует HTML-документы и предоставляет API, который позволяет вам вызывать страницы, заполнять формы, ссылки на ссылки и т.д.... так же, как вы делаете в своем "обычном" браузере.
который точно похож на виджет веб-просмотра, предоставленный внутри Android-устройства sroid, вам не нужен какой-либо другой дополнительный баннер, чтобы открыть веб-страницу внутри вашей деятельности.
согласно документации Google для Android
WebView - это представление, отображающее веб-страницы. Он использует механизм рендеринга WebKit для отображения веб-страниц и включает в себя методы перемещения вперед и назад по истории, увеличению и уменьшению масштаба, выполнению текстовых запросов и т.д.
добавьте это в свой XML файл макета вашей деятельности.
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
а это - в файл класса активности.
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.loadUrl("http://www.your url .com");
подробнее об этом здесь: http://developer.android.com/guide/webapps/webview.html