如何在分布式jar文件中包含资源文件?

时间:2013-05-01 16:49:08

标签: android eclipse jar resources

我的搜索但是没有看到任何答案。

我正在构建一个jar作为SDK进行分发。在我将其标记为构建路径中的“is library”之后,jar文件成功构建。

现在的挑战是还要包括我的js库(js.zip)以便分发。在将它放在PROJECT_ROOT / res / raw下之后,我看到js.zip被包含在我的.APK文件中。但我没有通过“jar tf my.jar”在jar文件中看到它。如果将我的文件放在assets文件夹中,则不会产生差异。

这可能吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

  

在构建路径

中将jar文件标记为“is library”后,jar文件成功构建

该JAR不是为重新分发而设计的。这是在主机项目中使用Android库项目的工件。

  

这可能吗?

在撰写本文时,Android不会在JAR中分发Android资源。 也许这将在目前正在开发的基于Gradle的构建系统中可用。

您需要分发一个包含资源的Android库项目,该项目还包含src/树或libs/中针对该代码的手动构建的JAR。

例如,以下是一对相当粗略的Ant任务:

<target name="jar" depends="debug">
    <delete file="bin/CWAC-ColorMixer.jar" />
    <jar destfile="bin/CWAC-ColorMixer.jar" basedir="bin/classes" excludes="**/BuildConfig.class **/R*.class" />
</target>

<target name="dist-lib" depends="jar">
    <copy todir="/tmp/CWAC-ColorMixer/libs">
        <fileset dir="libs/" />
    </copy>
    <copy todir="/tmp/CWAC-ColorMixer/res">
        <fileset dir="res/" />
    </copy>
    <copy file="bin/CWAC-ColorMixer.jar" todir="/tmp/CWAC-ColorMixer/libs" />
    <copy file="AndroidManifest.xml" todir="/tmp/CWAC-ColorMixer" />
    <copy file="build.xml" todir="/tmp/CWAC-ColorMixer" />
    <copy file="local.properties" todir="/tmp/CWAC-ColorMixer" />
    <copy file="project.properties" todir="/tmp/CWAC-ColorMixer" />
    <copy file="LICENSE" todir="/tmp/CWAC-ColorMixer" />
    <mkdir dir="/tmp/CWAC-ColorMixer/src" />
</target>

第一个创建JAR文件。第二个在临时目录中创建一个Android库项目。特别是第二个Ant任务确实需要改进(例如,可配置的位置,自动压缩结果),但它可以工作。