Есть ли обходной путь для ошибки Android "Невозможно разрешить виртуальный метод java/beans/PropertyDescriptor"?

Я пытаюсь использовать сторонний jar-файл в приложении Android. Я был в состоянии использовать некоторые из классов в файле JAR просто отлично. Однако один из классов ссылается на некоторые классы Java, которые, по-видимому, не поддерживаются dalvik vm. Вот некоторые из ошибок, которые я вижу в LogCat:

Unable to find class referenced in signature java/beans/PropertyDescriptor.
Unable to resolve virtual method java/beans/PropertyDescriptor.getName().
Unable to resolve virtual method java/beans/PropertyDescriptor.getReadMethod().
Unable to resolve static method java/beans/Introspector.getBeanInfo().
Unable to resolve exception class java/beans/IntrospectionException.

Похоже, что классы Java, связанные с самоанализом и рефлексией, не поддерживаются dalvik. Я хотел бы выяснить две вещи. Это план поддержать это в далвике в ближайшем будущем? Во-вторых, есть ли у кого-нибудь предложение обойти эту проблему?

2 ответа

Похоже, что классы Java, связанные с самоанализом и рефлексией, не поддерживаются dalvik.

Не на общей основе, AFAIK. Одной из задач основной команды Android является сохранение небольшого размера прошивки, чтобы снизить стоимость устройств. Одним из побочных эффектов этого является включение только классов из java.* а также javax.* что они считают необходимым. Первоначально, ни один из java.beans.* существовал в Android; теперь доступно несколько классов и интерфейсов, но не весь пакет.

Это план поддержать это в далвике в ближайшем будущем?

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

Во-вторых, есть ли у кого-нибудь предложение обойти эту проблему?

Если сторонний JAR является проектом с открытым исходным кодом:

  1. Хватай необходимое java.beans классы от Apache Harmony и поместите их в свой проект
  2. Сложить их в отдельный пакет (например, bondy.beans), так как Android не понравится, если вы попытаетесь загрузить java.beans занятия в вашем проекте
  3. Модифицируйте сторонний JAR-файл, чтобы использовать вашу реорганизованную версию классов.

Возможно, что jarjar может что-то с этим сделать - я еще не использовал этот инструмент и не знаю, насколько он способен.

Апачская гармония давно ушла в отставку. Я использую openbeans. И это решает все проблемы для меня.

Другие вопросы по тегам