Немного фона (не так важно, поскольку мой вопрос довольно общий): Я хочу использовать библиотеку Reader для чтения ROME для анализа RSS-канала с медиа-контентом. Но ROME не поддерживает средства массовой информации из коробки, поэтому я хочу использовать медиа-плагин, который поставляется как отдельный JAR и основывается на исходной библиотеке.Изменение канонических имен классов в пакете
Так у меня есть два JARs (для которого у меня нет исходного кода), и мои Gradle зависимости выглядеть следующим образом:
dependencies {
compile files('libs/android-rome-feed-reader-1.0.0.jar')
compile files('libs/mediarss-0.2.3.jar')
}
Проблема в том, что имена пакетов из Android версии РИМА все приставка с com.google.code.rome.android.repackaged.
относительно исходной библиотеки.
Например, Android РИМ Lib содержит следующий интерфейс:
package com.google.code.rome.android.repackaged.com.sun.syndication.feed.module;
public interface Module { /* ... */ }
В то время как все классы в медиа-плагином обратитесь к оригинальным канонические имена:
public interface MediaModule extends com.sun.syndication.feed.module.Module { /* ... */ }
Вполне естественно, что компиляция терпит неудачу:
Error:(69, 34) error: cannot access Module
class file for com.sun.syndication.feed.module.Module not found
Есть ли обходной путь для этого? Могу ли я каким-либо образом статически изменять канонические имена для всех классов в библиотеке? Или есть другое решение?
Спасибо!
ДЕЙСТВИТЕЛЬНО просто переупакованы? – rmalchow
На странице проекта он просто говорит: «Android ROME Feed Reader - это переупаковка ROME, чтобы он работал на устройствах Android». Я не уверен, что они подразумевают под этим, и как только переупаковка будет иметь какое-то значение. Я думал, что может быть больше, но опять же, я не нашел источников. Если я не получу его на работу, я предполагаю, что прибегу к оригинальному ROME. – SqueezyMo