eclipse jar 打包

Step1

 


Step2

 


 

只勾选src目录下的即可。图片资源建议放在asset里边,如果有layout之类的资源文件,建议不要使用jar的形式。

 

 

 

 

 

其中,jar中包含的lib包,不会起作用

 

 

TestJarHigh.java引用了ToastUtil.jar。

 

 

如果使用TestJarHigh,则必须包含TestUtil.jar ,即使TestjarHigh.jar中包含了ToastUtil.jar,如果工程中,不包含这个jar,则还是不能使用,会提示TostUtil的jar包找不到。


关于资源文件:

关于资源文件:

虽然无法直接引用资源文件,但是如果外边程序想获取某个资源文件时,也是可行的。
其原理是以数据流读取jar中指定的文件。
比如读取Assert文件下的icon.jpg文件:
你可以在插件中封装一个对外的方法:
    public static Drawable getAssertDrawable(Contextcontext,String fileName){
        try {
            InputStreaminStream=context.getAssets().open(fileName);
            returnnew BitmapDrawable(BitmapFactory.decodeStream(inStream));
        } catch (IOException e) {
            Log.e(LOG_TAG,"Assert中"+fileName+"不存在");
        }
        return null;
    }
直接使用该方法可以得到文件。
后来又尝试在外部程序,直接使用context.getAssets().open(fileName)方法获取jar中文件,
让人喜出望外的是竟然成功了。呵呵!
后来分析,外部程序编译时,其实连同jar包中内容一起混编。jar包中的Assert文件会同外部程序的Assert一起
由AssertManager管理。
所以当你jar包中Assert内部文件和外部Assert中的文件有命名冲突时,编译器会报错的。

另外,还有人提供另外一种方法来读取诸如Drawable等文件夹下的文件。
    public static Drawable getDrawableForJar(String resName,Classclass){
        InputStream inStream=class.getResourceAsStream(resName);
        return newBitmapDrawable(BitmapFactory.decodeStream(inStream));
    }
使用class.getResourceAsStream()方法读取,注意这里resName是文件的相对路径,比如jar根目录下res/drawable/icon.png,
则调用方法为:class.getResourceAsStream(/res/drawable/icon.png);

这里主要是采用ClassLoader的下面几个方法来实现:

  public URL getResource(String name);

  public InputStream getResourceAsStream(String name)

  public static InputStream getSystemResourceAsStream(String name)

  public static URL getSystemResource(String name)

  后两个方法可以看出是静态的方法,这几个方法都可以从Jar中读取图片资源,但是对与动画的gif文件,笔者在尝试过程中发现,存在一些差异。

  String gifName为Gif文件在Jar中的相对路径。

  (1)使用了两个静态方法

  BufferedImage image=ImageIO.read(ClassLoader.getSystemResourceAsStream(gifName));

  或者

  Imageimage=Toolkit.getDefaultToolkit().getImage(ClassLoader.getSystemResource(gifName));

  这两种方式可以成功地读取gif文件,但是对于gif动画,显示出来地是静态的。

  (2)使用其他两个方法

  Image image=Toolkit.getDefaultToolkit().getImage(this.getClass.getClassLoader()

.getResource(gifName));

再这种方式下动画可以正常显示了。


总之,jar中包含资源文件,实在是不明智,总不能让使用者把布局文件自己粘吧。很麻烦。建议用工程的lib形式或者sdk的形式。Library的形式不太好,需要给别人源码,你懂的。


 

参考:http://www.iteye.com/topic/483115



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值