如何为第三方提供一个jar包

来源:互联网 发布:淘宝上传宝贝图片大小 编辑:程序博客网 时间:2024/05/14 16:35

开发中经常会使用第三方提供的jar,这些jar包中封装很多实用的功能。比如图形处理的UIL、Picasso、Glide,网络处理的Http-ok等,那我们如何为其他人提供一个jar包呢?

可能很多人会觉得那是一个非常简单的事,真的如此吗?如果仅仅是工具类功能的jar包,或许它真的是一件很简单的事,但如果我们需要向其他人提供图片、界面、自定义图形等功能呢?

这篇文章的目的就是来解决这类问题

1、一个简单的jar包

1) 生成jar包

编写一个测试用的工具类


打jar包:右键工程-->export-->jar file-->选择src-->finish



会在选择的位置生成一个后缀为.jar的文件

2) 在其他应用中使用jar包

1) 将生成的test.jar文件拷贝到要使用这个jar包的工程的libs目录下

2) 使用jar包提供的功能

Logcat输出:


2、带资源的jar包

注意事项1:jar包中所有资源不可直接通过R.XXX.XXX方式获取,需要通过 context.getResources().getIdentifier(String,String,String)方式

注意事项2:jar包工程和使用他的工程中,不可有同名的文件及资源id等,如图片名称、控件id等

1) jar包示例

在jar包工程中增加一个布局文件activity_main_jar.xml,如下


在java文件中通过如下方式使用布局及控件

打jar包:右键工程-->export-->jar file-->选择src-->finish

2) 其他应用使用jar包

将test.jar拷贝到第三方应用的libs目录下,将activity_main_jar.xml文件拷贝到layout下,合并string、dimen等文件。

注意:jar包中的四大组件,均需要在第三方应用的资源清单中注册才可以使用。

调用:


3、资源id为一个数组的jar包

1)自定义属性

为了生成一个数组形式的id,我们来自定义一个属性,在自定义控件中使用

在res/values文件下定义一个attrs.xml文件,代码如下:


自定义MyView:


在布局文件中使用自定义View


运行程序后logcat输出为:


R.java



2) 在自己的工程中可以像上面那样自定义View和属性,但是如果我们的工程需要提供给其他人使用,那么上面在自定义View获取控件id方法便不能用了,因为在我们生成jar包时,R.XXX.XXX形式获取到的id为编译后的一个int型,但是这个值在第三方应用编译时会改变。如果像上面那种方式使用,会抛出找不到资源的异常。

而R.styleable.MyAttrs返回的是一个数组,上面介绍的使用context.getResources().getIdentifier方式只能返回一个int型,所以为了解决上面的问题我们通过反射来获取。

例如我们要获取返回值为int[]型的资源id:


此时我们可以将上例中自定义view改为如下形式:


打成jar包,将图片、布局、attrs等资源文件合并到第三方应用中

然后运行:


第三方应用R.java文件:


PS:完整代码路径

http://download.csdn.net/detail/xsz_1025/9628463

0 0
原创粉丝点击