参考文档:1:jar包中包含资源,资源放在assets文件夹中http://my.oschina.net/u/614511/blog/76957
2:jar包中不包含资源,资源放在主工程的res中 http://my.oschina.net/handsomeban/blog/150220
3:jar包中不包含资源,新建一个目录存放资源 http://blog.youkuaiyun.com/wletv/article/details/8547797
3方案获取资源方法:http://riddickbryant.iteye.com/blog/436693
下面两篇说出了原理,不方便使用。
http://blog.youkuaiyun.com/p106786860/article/details/12152011
http://blog.youkuaiyun.com/xiaanming/article/details/9257853
例一:
在Android中可以将资源文件放在assets目录(可以有子目录)中和程序一起打包为jar,在其他项目引用时可以只引用jar包,不需要导入资源文件,在编译应用时会将jar包assets目录中的文件跟应用中的assets目录中的文件合并,如果jar中的文件和应用中的文件重名在编译的时候会报错“Error generating final archive: Found duplicate file for APK”提示有重名文件。
然后就可以应用中通过如下方法获取资源文件
1 | Drawable.createFromStream(am.open( "login_btn_src_pressed.png" ), "login_btn_src_pressed" ) |
其中的am对象为AssetManager实例,通过Activity.getAssets()获得,用来访问assets目录资源
android中各个平台提供的SDK的jar包就是这样弄的。
第二中方案就是把代码导成jar包,然后将资源相应的添加到主工程的目录下就可以了。
例三:新建一个工程,在工程中scr文件夹下创建com/lj/jartest/JarTest.java
在src目录下新建目录resource,在resource目录下存放图片ic_launcher.png
不可在项目根目录下新建文件夹存放资源,即跟src同一层级的文件夹,这样会找不到。
资源也可以按android的存放方法存放,即放在res目录下对应的文件夹下。
在JarTest.java中创建方法:
public Bitmap getBimtap(Context context) {
InputStream is = getClass().getClassLoader().getResourceAsStream(
"resource/ic_launcher.png");
return BitmapFactory.decodeStream(is);
}
将工程src文件夹导成jar包,将jar包加入主工程,主工程可以通过getBitmap(Context context)方法获取到Bitmap对象. 布局资源可以用java代码实现,或许可以研究一下android是如何解析布局文件的,也许可以有方法。