一个混合开发框架不止包含代码,还可能包含静态资源,比如数据库,默认 js 脚本等。本文介绍了如何在 Android 系统中打包包含静态资源的 jar 包,以及设置 eclipse 自动编译。
处理项目
首先要使用 android sdk 提供的命令行工具处理已有的项目:
cd YourProjectDir
android update project -p ./
自定义 ant 编译步骤
上一步生成的 build.xml 中,会有一个对 custom_rules.xml 的引用,这个引用是可选的,没有 custom_rules.xml 也不会影响编译。但这个文件正好是用来添加自定义编译步骤的,要把 assets 资源添加到 jar 包中,就要创建这个文件。在工程目录下创建 custom_rules.xml 后,将以下内容添加到其中:
<?xml version="1.0" encoding="UTF-8"?>
<project name="custom_rules">
<target name="-post-compile" if="${project.is.library}">
<echo>Post Compile: add assests from ${asset.absolute.dir} to ${out.library.jar.file}</echo>
<jar destfile="${out.library.jar.file}" update="true">
<zipfileset dir="${asset.absolute.dir}" prefix="assets" excludes="**/*.java ${android.package.excludes}"/>
</jar>
<echo>Post Compile: rename ${out.library.jar.file} to ${out.absolute.dir}/${standalone.jar.file}.jar</echo>
<delete file="${out.absolute.dir}/${standalone.jar.file}.jar" quiet="true"/>
<rename src="${out.library.jar.file}" dest="${out.absolute.dir}/${standalone.jar.file}.jar"/>
</target>
</project>
其中standalone.jar.file 是定义在 local.properties 中的一个配置,表示你要生成的 jar 包的名字,当然你要写在别的地方也不是不行。这段代码做的事情就是在 compile 之后打一个 jar 包,把 assets 目录中的文件都压缩到 jar 包的 assets 目录中。然后将老版本的 jar 包删除,并将刚生成的 jar 包改成我们要的名字。这样打出来的 jar 包中会包含 assets 资源,apk 可以直接引用。为了不产生命名冲突,建议将 jar 包中的 assets 资源都放在一个以库名称命名的子目录中,这样 apk 中的资源就不会和库里的资源冲突了。
Eclipse 自动构建
为了使用 eclipse 调试(暂时还在使用 eclipse,android studio 应该大同小异),我们还需要配置 eclipse 工程(手上的项目暂时还不方便切换 android studio,以后再说),实现调用 ant 自动编译。首先你的 path 环境变量里肯定要有 ant,windows 平台建议安装 winant,mac 平台直接安装 ant 就好。
然后要配置 eclipse,达到每次修改原文件都自动调用 ant 编译的效果。具体方法是点击 project->properties,选择 builders,添加一个 builder,配置如图所示。然后把所有默认的 builder 都不选,只勾选新添加的 builder 即可。
具体设置如下图:
注意,这种做法的前提是我的工程并不算大,自动编译还能跟上修改,如果是大工程,还是不要自动编译了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。