Я разработал несколько повторно используемых компонентов Android, которые в основном класс. Этот класс имеет некоторые ресурсные зависимости, например некоторые png drawables, некоторые xml-макеты и т. д. Так что этот класс ссылается на автоматически сгенерированный R-файл. Я хотел бы распространить этот код в одном пакете, таком как JAR-файл, другим разработчикам для использования в своих приложениях.
Я прочитал, что единственно возможное решение - это распространять код вместе со всеми моими ресурсами, которые другие должны скопировать в свою папку res ( source ).
Итак, я создал файл jar, содержащий файл класса (скажем, MyClass, который находится в пакете com.xyz.android.app
) и ресурсы, и попытался использовать его в моем новом приложении.
Поэтому я добавил файл jar в путь сборки моего нового приложения, используя опцию add external jars
в eclipse, и скопировал все ресурсы в папку res моего нового приложения. (Класс активности говорит, что MainActivity моего нового приложения находится в пакете com.abc.myapplication
, только на тот случай, если это может быть полезно)
Но когда я запускаю это новое приложение, в классе MyClass есть java.lang.ClassCastException
. Я попытался отладить приложение, а затем обнаружил, что в классе MyClass существует проблема «R не может быть решена».
Затем я изменил пакет MainActivity на com.xyz.android.app
(что не так, другие разработчики будут рады сделать), но опять та же проблема.
Но когда я просто копирую исходный java-файл, так что MainActivity.java и MyClass.java находятся в пакете com.xyz.android.app, приложение работает нормально.
Так что, если мне нужно распространять так, чтобы другие пользователи не беспокоились об этих именах пакетов,
как я могу это сделать? Пожалуйста, помогите !!
Редактировать
В android.jar также есть некоторые ресурсы. Как они упоминаются в проекте? Как они используются в классах Android? Есть также файл android.R?
Разве нельзя сделать то же самое, то есть сделать файл jar, например, android.jar, для моего повторно используемого кода?