Я разработал некоторый допускающий повторное использование компонент андроида, который является в основном классом. Этот класс имеет некоторые зависимости от ресурса, например, некоторый png drawables, некоторые xml разметки и т.д. Таким образом, этот класс сослался на автоматически сгенерированный файл R. Я хотел бы распределить этот код в единственном пакете как файл банки другим разработчикам для использования в их приложениях.
Я считал, что единственное возможное решение состоит в том, чтобы распределить код вместе со всеми моими ресурсами, которые другие должны скопировать в свою "res" папку (источник).
Таким образом, я создал файл банки, имеющий файл класса (скажите, что MyClass, который находится в пакете com.xyz.android.app
) и ресурсы и попробованный для использования этого в моем новом приложении.
Таким образом, я добавил файл банки к своему новому использованию пути сборки приложений add external jars
опция в затмении и скопированный все ресурсы в res папку моего нового приложения. (Класс действия говорит, что MainActivity моего нового приложения находится в com.abc.myapplication
пакет, только для случая, если это может полезный),
Но когда я запускаю это новое приложение существует java.lang.ClassCastException
в классе MyClass. Я пытался отладить приложение, и затем я нашел, что в классе MyClass, существует "R, не может быть разрешен" проблема.
Затем я изменил пакет MainActivity на com.xyz.android.app
(который не является путем, другие разработчики будут рады сделать), Но снова та же проблема.
Но Когда я просто копирую источник, Java регистрирует таким образом, что и MainActivity.java и MyClass.java находятся в com.xyz.android.app пакете затем прекрасное выполнение приложения.
Таким образом, если я должен распределить таким образом, что другие пользователи не должны беспокоить эти вещи именования пакета, как я могу выполнить это? Помогите!!
Править
В android.jar существуют также некоторые ресурсы. Как на них ссылаются в проекте? Как они используются в классах андроида? Существует также андроид. R файл?
Разве не возможно сделать то же самое т.е. сделать файл банки как android.jar для моего повторно используемого кода?
Как заметил Ник Стронг, в проекте нет ничего особенного, чтобы управлять этим, и текущие признаки указывают на то, что предстоящие изменения в инструментах SDK могут только помочь немного.
Я создаю некоторые другие инструменты , чтобы помочь справиться с этой проблемой. Я надеюсь, что через несколько дней будет опубликована документация для разработчиков.
Я играл с классом ParcelHelper Марка Мерфи по адресу http://github.com/commonsguy/cwac-parcel . Вкратце, это набор методов, которые позволяют вам обращаться к компонентам R по имени без необходимости импортировать R в ваш код.
Если я правильно понимаю ваш вопрос, это именно то, что вам нужно. Возможно, вам все равно придется скопировать некоторые ресурсы, такие как стили, в свой проект.
В настоящий момент это сделать не так-то просто. Проблема в том, что проект, использующий ваш jar, не знает, как искать там чертежи и т. Д. Хорошая новость в том, что это скоро станет возможным (надеюсь, с SDK 2.2, который, по слухам, будет выпущен на IO на следующей неделе). См. Это сообщение в блоге http://mobilebytes.wordpress.com/2010/04/27/android-tools-version6-coming/