Упаковка рисованных ресурсов с помощью JAR? - PullRequest
2 голосов
/ 01 февраля 2012

Я создал службу полу-push (проверки уведомлений с централизованного http-сервера), которую я хотел бы распространять среди нескольких друзей и клиентов, чтобы они могли легко добавлять push-уведомления в свои приложения без особых усилий. нервотрепки.

Я продвинулся достаточно далеко, чтобы упаковать JAR-файл и включить его в некоторые другие мои проекты, но сейчас я бью кирпичную стену относительно упаковки ресурсов -

  • В моем проекте PushNotify у меня есть ресурс: R.drawable.goldstar
  • Я рисую его дважды в приложении, один раз, ссылаясь на R.drawable.goldstar, и один раз, ссылаясь на resources.getIdentifier('goldstar', 'drawable', 'com.com.pushnotify')
  • Когда я упаковываю PushNotify как свой собственный APK, золотая звезда правильно появляется в обоих местах.
  • Я щелкаю правой кнопкой мыши в eclipse, Export Project, как JAR-файл, снимаю флажок «ApplicationManifest.xml» из включенных файлов и нажимаю «Finish».
  • Я могу убедиться, что размер этого файла JAR увеличивается, когда я добавляю больше ресурсов для рисования.
  • Когда я затем упаковываю DependantApp.apk, включая PushNotify.jar в пути сборки, золотая звезда правильно появляется в обоих местах.
  • Если я удалю PushNotify.apk, золотые звезды исчезнут из DependantApp.apk, как если бы они не были упакованы с JAR; значение 0 возвращается для getIdentifier('goldstar', 'drawable', 'com.com.pushnotify').

Как я могу распространять JAR с доступными для рисования ресурсами и отображать их в зависимых приложениях? Приложения, включая мой JAR, никогда не нуждаются в доступе к значкам, которые я распространяю, только мой собственный код.

Несмотря на то, что в результатах поиска я нахожу много недоговорок, Я уверен, что это как-то возможно , потому что а) мой JAR-файл растет, когда я добавляю новые изображения, и б) я включил JAR-файлы, которые поставляются с иконками ранее ( Airpush делает это, как UrbanAirship ).

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 01 февраля 2012

Как я могу распространять JAR с доступными для рисования ресурсами и отображать их в зависимых приложениях?

Это в настоящее время не поддерживается.Создание проектов библиотек Android, которые могут распределять ресурсы, входит в план разработки инструментов и, как мы надеемся, появится в недалеком будущем.

0 голосов
/ 14 января 2013

Это не совсем то, что вы просили, но в любом случае вот интересный вариант:

Вместо getIdentifier('goldstar', 'drawable', 'com.com.pushnotify') используйте getIdentifier('goldstar', 'drawable', getApplicationContext().getPackageName())

И распространять изображения / ресурсы в виде .zip для распаковки, установки и компиляции с целевым приложением (которое будет использовать ваш общий .jar)

И не включайте изображения в .jar.

Это не проверено, но это должно работать.

0 голосов
/ 01 февраля 2012

Я не думаю, что это возможно, если вы пытаетесь это сделать.Android "строит" ресурсы внутри своих приложений.Ресурсы в jar-файлах (насколько я знаю) игнорируются.

Однако вы можете создать его как «Android-библиотеку», в которую включены эти XML-макеты.Если вы не хотите, чтобы весь код был «легко читаемым», вы можете поместить только эти ресурсы и классы, которые их используют, в «android-library», в то время как остальная часть в вашей библиотеке остается внутри .jar-файла

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