Как собрать пример Cling для Android с Eclipse
Я посмотрел исходный код здесь https://github.com/4thline/cling/tree/master/demo/android (на самом деле я использовал исходный код, поставляемый с дистрибутивом Cling 2.0.1, он такой же)
Но после нескольких недель попыток построить его с моим Eclipse, я не добился успеха
Я нашел статью об этом здесь http://datababel.wordpress.com/2013/07/29/upnp-client-in-android-with-cling-getting-started/ но инструкция все еще недостаточно ясна.
Я хочу использовать Maven с Eclipse, чтобы упростить работу, но в этой статье кажется, что они не использовали Maven, а непосредственно флягу
Может кто-нибудь дать мне пошаговое руководство по сборке исходного кода Android с Eclipse с помощью Maven (файл pom.xml, который поставляется с исходным кодом)? Я имею в виду что-то вроде:
1. Create android project
2. Convert to maven
3. Add something to pom.xml and everything works
4. etc.....something like that
Я пытался спросить в списке рассылки цепляющегося форума, но форум так неактивен, и владелец форума Крис Бауэр не хочет отвечать на что-то, связанное с этим
Большое спасибо. Любая помощь приветствуется.
РЕДАКТИРОВАТЬ 1:
Я пробовал решение: откройте файл.jar и удалите about.html в каждый файл.jar, затем снова сожмите их. Я включил в свой проект файл 8 джетов.jar в соответствии с этой статьей http://www.gubatron.com/blog/2013/03/12/jar-dependencies-if-you-plan-to-use-the-cling-upnp-library-in-your-android-project/
jetty-security-8.1.8.v20121106.jar
jetty-http-8.1.8.v20121106.jar
jetty-continuation-8.1.8.v20121106.jar
jetty-io-8.1.8.v20121106.jar
jetty-util-8.1.8.v20121106.jar
jetty-server-8.1.8.v20121106.jar
jetty-servlet-8.1.8.v20121106.jar
jetty-client-8.1.8.v20121106.jar
И это журнал ошибок при запуске в Eclipse
[2014-12-07 12:07:20 - GR2] Dx
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: class name (org/eclipse/jetty/http/AbstractGenerator) does not match path (org.eclipse.jetty.http_8.1.8.v20121106/org/eclipse/jetty/http/AbstractGenerator.class)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:520)
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
at com.android.dx.command.dexer.Main.processClass(Main.java:665)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
at com.android.dx.command.dexer.Main.access$600(Main.java:78)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:596)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:188)
at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:786)
at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:597)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:328)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:403)
at org.eclipse.core.internal.resources.Project$1.run(Project.java:618)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313)
at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597)
at org.eclipse.core.internal.resources.Project.build(Project.java:124)
at com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:1143)
at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:155)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:885)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:739)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1039)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1256)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
...while parsing org.eclipse.jetty.http_8.1.8.v20121106/org/eclipse/jetty/http/AbstractGenerator.class
[2014-12-07 12:07:20 - GR2] Dx 1 error; aborting
[2014-12-07 12:07:20 - GR2] Conversion to Dalvik format failed with error 1
2 ответа
Я также столкнулся с подобной проблемой, как это при создании проекта. Вам нужно сделать jar из каталога, в который вы извлекли его содержимое, а не из родительского каталога. По существу, шаг 7 этой статьи - https://datababel.wordpress.com/2013/07/29/upnp-client-in-android-with-cling-getting-started/ должен выполняться из того же каталога, что и "jetty". -server\8.1.8.android", используемый на шаге 4-6.
Вы можете добавить "servlet-api-3.0.jar" и "slf4j-jdk14-1.7.5.jar" в libs и попробовать снова. Мое приложение построено на Android studio 1.0.1, работает хорошо.