问题:我需要在多个android项目中使用同样的代码,而且这些代码又包含资源文件,怎么办?
当然会想到打成jar!
但是,当辛辛苦苦把资源文件与各种java文件打成一个jar在另外一个程序中使用的时候,无情的报错:重复的命名(大致是这个意思,具体是什么忘记了),
原因是jar的AndroidManifest.xml、drawable等文件名与我现在项目中的冲突了,但是把jar包项目中的这些文件名改了又不好使,所以,有人把资源文件提取出来放在src目录中,而不是传统的res目录下。
图个方便,我直接把图片放到了Activity同一包下。
然后在Activity中如下引用这个图片资源:
Bitmap bm = BitmapFactory.decodeStream(getClass().getClassLoader().getResourceAsStream("com/packetjar/main_bg_hair.jpg"));
ImageView iv = new ImageView(context);
iv.setImageBitmap(bm);
注意图片路径的写法。
这个是图片,如果是字符串,就可以弄个静态类来保存这些字符串。
然后打成jar包,怎么打jar包就不说了,注意把那些引起冲突的文件的勾都去掉:
由于去掉了配置文件啊什么的,所以如果jar中包含Activity这些东西,而且res下面不止是图片和字符串啊,还有动画、样式等文件, 会变得很麻烦,果断放弃了。
幸亏有种比较好的代替方案,就是:
我在新建android项目的时候,可以把这个项目设置成库项目。所谓的库项目,就是指我这个项目可以被别的项目所引用(当然这个库项目与引用这个库项目的android项目必须在一个workspace下面)。
设置成库项目的方法如下,先新建一个android项目,然后右击项目->properties->Android
勾上。
这时你会发现,bin目录下的内容变了:
在bin下面生成了一个jar包,而且res下面是空的,在不是库项目的情况下大家可以看下是什么。
按正常的流程,我写一个Activity,引用res下的资源,并在配置文件中配置。
现在,我要在另外一个项目中引用这个库项目。
右击这个新的项目,properties->Android->
点Add,然后会让你选择添加库项目,选择好了后点确定。
这时发现项目发生了一些变化,多了一个目录:
里面有一个jar文件,就是刚才库项目中的那个bin目录下的jar嘛。
这样,我就可以引用库文件下的内容了,Activity、Service这些也不用再在配置文件中定义了。
觉得这种方法很方便。