【转】Android 编程下如何修改 jar 文件的包名
2016-03-14 09:46
393 查看
文章转载自:http://www.cnblogs.com/sunzn/p/4166353.html
首先我们要说说为什么要修改 jar 文件的包名,jar 包我们会非常高频率的使用,尤其是用一些其他三方库的时候,往往把 java 代码打包成 jar 文件,方便项目依赖使用。笔者在开发过程中遇到过一些问题,是由于 jar 文件里面的包名和项目或者运行时环境的引用文件包名上存在冲突导致的,这时候我们修改 jar 文件的包名是一个比较快速有效的解决办法。举两个例子,是笔者亲身经历的两个情况。
Gson库:这个相信很多人都在使用,但是直接导入 gson 的 jar 包,在 HTC Desire HD 这款手机上会抛出异常(TypeNotFoundException)
Jackson库:这也是个 json 解析的,我们在做苹果推送后台的时候,后台用 java 写的,使用 java-apns 库,依赖于 Jackson,然后运行就会抛出异常,具体原因没有查,初步怀疑包名冲突,修改之后就解决的。
下面介绍如何修改jar文件的包名,需要用到一个小工具,叫做 jarjar.jar
下载地址:http://code.google.com/p/jarjar/downloads/list
这里我们以 gson.jar 为例,在 gson.jar 包目录下新建一个文本文件,名字随意,例如 rule.txt,写入下面的内容。
上面写的就是修改规则,我们将包名中的 gson 修改为 mygson。打开命令行,输入如下命令。
命令执行完毕,同目录下会多出一下 mygson.jar,这个就是修改包名之后的 jar 文件,我们项目导入这个 jar 包使用即可。
jarjar本地下载地址:点击打开链接
首先我们要说说为什么要修改 jar 文件的包名,jar 包我们会非常高频率的使用,尤其是用一些其他三方库的时候,往往把 java 代码打包成 jar 文件,方便项目依赖使用。笔者在开发过程中遇到过一些问题,是由于 jar 文件里面的包名和项目或者运行时环境的引用文件包名上存在冲突导致的,这时候我们修改 jar 文件的包名是一个比较快速有效的解决办法。举两个例子,是笔者亲身经历的两个情况。
Gson库:这个相信很多人都在使用,但是直接导入 gson 的 jar 包,在 HTC Desire HD 这款手机上会抛出异常(TypeNotFoundException)
Jackson库:这也是个 json 解析的,我们在做苹果推送后台的时候,后台用 java 写的,使用 java-apns 库,依赖于 Jackson,然后运行就会抛出异常,具体原因没有查,初步怀疑包名冲突,修改之后就解决的。
下面介绍如何修改jar文件的包名,需要用到一个小工具,叫做 jarjar.jar
下载地址:http://code.google.com/p/jarjar/downloads/list
这里我们以 gson.jar 为例,在 gson.jar 包目录下新建一个文本文件,名字随意,例如 rule.txt,写入下面的内容。
rule com.google.gson.** com.google.mygson.@1
上面写的就是修改规则,我们将包名中的 gson 修改为 mygson。打开命令行,输入如下命令。
java -jar jarjar.jar process rule.txt gson.jar mygson.jar
命令执行完毕,同目录下会多出一下 mygson.jar,这个就是修改包名之后的 jar 文件,我们项目导入这个 jar 包使用即可。
jarjar本地下载地址:点击打开链接
相关文章推荐
- Android一点 修改jar的内容
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- android真机调试 logcat日志不输出或者输出内容较少时解决方法
- Android中如何利用AIDL机制调用远程服务
- Android 项目中文件夹作用(res文件夹详细介绍)
- Android:TabLayout的用法
- Android程序开发之自定义设置TabHost,TabWidget样式
- android 记录崩溃日志
- Android关于Activity
- Android常用标记
- Android开源框架之图片加载器ImageLoad的用法
- android onSaveInstanceState 方法
- Android学习之 context的理解应用
- android audio音量控制流程
- Android旋转屏幕时阻止activity重建
- Android课堂练习及答案Test1,2,3合辑
- Android实现全屏显示
- Android中Canvas的clipRect参数Region.OP的理解
- Android应用开发特色
- 探寻Android的线程问题