如何为第三方提供一个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
- 如何为第三方提供一个jar包
- 为应用添加第三方jar包
- android 如何使用第三方jar包
- mapreduce如何调用第三方jar包
- UIAutomator如何添加第三方jar包
- 如何导入第三方jar包
- hadoop如何使用第三方jar包
- Android提供第三方jar包时资源打包
- 第三方jar包
- 如何引入第三方jar包(以google play service为例
- 如何引入第三方jar包(以google play service为例)
- 如何引入第三方jar包(以google play service为例)
- 如何引入第三方jar包(以google play service为例)
- jar 文件如何引用第三方jar包
- android开发引入第三方Jar包---achartengine为例
- Telephony如何为第三方应用提供服务
- Android引入第三方jar包的方法及如何将自己的代码封装成一个jar库
- 第三篇,framework里启动某服务并对第三方apk提供jar包接口
- C# Newtonsoft.Json 解析多嵌套json 进行反序列化
- 移植gtk,这个配置有点早,可以了解一下他的工作流程
- springMVC实现首页的重定向(<mvc:view-controller>以及<mvc:annotation-driven/>标签使用)
- 最后一个单词的长度(未通过)
- 删除文件里的所有文件
- 如何为第三方提供一个jar包
- C#中,当鼠标移动到控件上,动态显示提示内容 ToolTip
- ROS学习笔记(1)-----ROS Kinetic版本安装
- 使用Gradle管理你的Android Studio工程
- 【数据结构】图论算法笔记整理
- UVALive 6424 Russian Dolls
- 孙鑫《VC++深入详解》完整版PDF 下载
- 完整的node项目
- mysql数据库日期设计以及mybatis映射文件和实体属性的关系