в том числе предварительно встроенные Java-классы в проект Android - PullRequest
1 голос
/ 03 мая 2010

Я пытаюсь включить проект Java Maven в мой проект Android. Проект maven - это неофициальный проект, который позволяет разработчикам получать доступ к учетным записям Google Reader и обрабатывает все транзакции http и построение URI / URL, что делает каналы и элементы захвата из Google Reader прозрачными для разработчика. проект доступен здесь:

http://code.google.com/p/greader-unofficial/

код изначально написан для стандартного jdk и использует классы из java.net, которые не являются частью стандартного Android SDK. на самом деле я попытался вручную разрешить все зависимости и столкнулся с проблемой, когда дошел до включения частей com.sun.syndication, требуемых классом be.lechtitseb.google.reader.api.util.AtomUtil.java ... некоторые из классы в java.net, которые находятся в стандартном jdk (я использую 1.6), не находятся в Android SDK. кроме того, разрешение всех этих зависимостей вручную просто смешно, когда я собираю проект maven, который должен быть довольно простым.

однако я могу использовать maven для компиляции источников без проблем. Как я могу включить этот проект Maven, который зависит от полной JDK, в мой проект Android таким образом, что он будет компилироваться, чтобы я мог получить доступ к классу GoogleReader из моего проекта Android? и, к сведению, у меня нет опыта переписывать весь этот API для работы со стандартным Android SDK.

Ответы [ 3 ]

0 голосов
/ 04 мая 2010

Проблема не в сборке / компиляции кода, верно? Как вы говорите, он прекрасно компилируется. Он использует классы, прямо или косвенно, которые недоступны в Android. (И я подчеркиваю, что даже если он скомпилируется, это не значит, что он будет работать на Android, так как могут потребоваться классы во время выполнения, которых нет в Android.) Поэтому проблема заключается в том, чтобы получить эти классы в ваш .apk.

У вас есть возможность встроить в Android копии сторонних библиотек, добавив их в external-libs. Однако я не знаю, что он работает, просто помещая туда файл rt.jar JDK (который содержит все классы java.net и все остальное тоже). Ваше приложение будет иметь вторые копии стандартных классов библиотек Java, которые почти наверняка не будут совместимы.

Я сильно подозреваю, что это не сработает или, если это произойдет, будет хрупким.

Так сложно изменить библиотеку? Если есть только несколько java.net классов, которые недоступны, возможно, в отдельном вопросе вы можете найти идеи о том, как обойти их, не имея их. Потому что, по моему опыту, в Android есть все классы java.net, поэтому мне было бы любопытно, чего не хватает.

0 голосов
/ 07 декабря 2010

К сожалению, существует несколько проблем, связанных с использованием Eclipse с M2Eclipse / maven, особенно в том, что ADT не упаковывает зависимости файла JAR в файл APK

К счастью, я написал плагин, который решает следующие проблемы:

https://code.google.com/a/eclipselabs.org/p/m2eclipse-android-integration/

0 голосов
/ 04 мая 2010

Если сторонней библиотеке требуются стандартные классы JRE для компиляции, вероятно, для них также требуется запустить . Попробуйте удалить сторонние методы / классы из вашей сборки, которые обращаются к недоступным классам JRE. Если ваше приложение все еще работает с урезанной библиотекой, предоставьте ее (при условии, что лицензия совместима с этим изменением). Вероятно, единственная другая опция для этой сторонней библиотеки - заменить вызывающие оскорбления вызовы JRE обходными путями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...