使用JAR打包可绘制资源?

时间:2012-01-31 21:17:51

标签: android eclipse jar

我已经建立了一个半推送服务(检查来自集中式http服务器的通知),我想将其分发给几个朋友和客户,这样他们就可以轻松地向他们的应用添加推送式通知麻烦。

我已经足够打包JAR并将其包含在我的其他一些项目中,但现在我在资源包装方面遇到了障碍 -

  • 在我的PushNotify项目中,我有一个资源:R.drawable.goldstar
  • 我在应用程序中绘制了两次,一次引用R.drawable.goldstar,一次引用resources.getIdentifier('goldstar', 'drawable', 'com.com.pushnotify')
  • 当我将PushNotify打包为自己的APK时,金星在两个地方都会正确显示。
  • 我右键单击eclipse,Export Project,作为JAR文件,从包含的文件中取消选中“ApplicationManifest.xml”,然后单击“完成”。
  • 我可以在添加更多可绘制资源时验证此JAR文件的大小是否增加。
  • 当我打包DependantApp.apk,包括构建路径中的PushNotify.jar时,金星在两个地方都会正确显示。
  • 如果我卸载PushNotify.apk,金色的星星会从DependantApp.apk中消失,好像它们没有与JAR打包在一起; getIdentifier('goldstar', 'drawable', 'com.com.pushnotify')返回0值。

如何使用可绘制资源分发JAR,并将它们显示在相关应用程序中?包括我的JAR在内的应用程序永远不需要访问我正在分发的图标,只有我自己的代码才能访问。

尽管我在搜索结果中发现了很多说法,我确信这在某种程度上是可能的,因为a)当我添加新图像时,我的JAR文件会增长,并且b)我已经包含之前带有图标的JAR文件( Airpush执行此操作,UrbanAirship 也是如此)。

提前致谢!

3 个答案:

答案 0 :(得分:2)

  

如何使用可绘制资源分发JAR,并将它们显示在相关应用程序中?

目前不支持。创建可以分发资源的Android库项目是在工具路线图上,并且有望在不久的将来出现。

答案 1 :(得分:0)

我不认为这可能是你尝试这样做的方式。 Android在其apks中“构建”资源。 jar文件中的资源(据我所知)被忽略了。

你可以将它构建为“android-library”,其中包含这些xml布局。如果您不希望整个代码“易于阅读”,您可以只将此rescources和使用它们的类放在“android-library”中,而库中的其余部分保留在.jar文件中

答案 2 :(得分:0)

这不是你要求的,但无论如何这里有一个有趣的选择:

而不是getIdentifier('goldstar', 'drawable', 'com.com.pushnotify')使用getIdentifier('goldstar', 'drawable', getApplicationContext().getPackageName())

将图像/资源作为.zip分发,以便与目标应用程序(将使用您的共享.jar的应用程序)解压缩,安装和编译。

并且不要在.jar中包含图像。

这未经过测试,但应该可行。