Android修改jar文件包名的方法分享

前言

jar 包我们会非常高频率的使用,尤其是用一些其他三方库的时候,往往把 java 代码打包成 jar 文件,方便项目依赖使用。

带来的问题是, 多个jar包容易出现包名冲突.

这时候我们修改 jar 文件的包名是一个比较快速有效的解决办法。

举两个例子,是笔者亲身经历的两个情况。

  1. Gson库:这个相信很多人都在使用,但是直接导入 gson 的 jar 包,在 HTC Desire HD 这款手机上会抛出异常(TypeNotFoundException)
  2. Jackson库:这也是个 json 解析的,我们在做苹果推送后台的时候,后台用 java 写的,使用 java-apns 库,依赖于 Jackson,然后运行就会抛出异常,具体原因没有查,初步怀疑包名冲突,修改之后就解决的。

下面介绍如何修改jar文件的包名,需要用到一个小工具,叫做 jarjar.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 包使用即可。

总结

以上就是这篇文章的全部内容了,希望本文的内容对各位Android开发者们能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Android在高jar包版本的工程中修改方法

    android的应用程序安装包APK如果是在高版本的android jar上开发的是无法在低版本的android SDK上跑的,所以我们需要将我们已经开发好的应用程序换上低版本的android jar包重新编译一个APK,那么如何简单的在高版本的工程中直接修改呢: 1. eclipse中点击工程->Properties-> Android 在右侧的界面中选中Android 2.2即可(前提是你的android sdk中同时包含这两个版本的android jar包) 或者 打开default.p

  • android导入第三方jar包报错 如何正确导入jar包

    在android上导入zxing.jar包,总是报错: Could not find class 'com.google.zxing.MultiFormatWriter', referenced from method com.changyang.app.util.Encode2dUtil.creat2DCode 后来找到了解决方法: 在adt17 的版本之前,导入第三方jar包时要建立一个lib目录,并 add to buiild path. 在adt17的版本之后,导入第三方jar包,要建立

  • Android studio中生成引用.aar和.jar的方法详解

    在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件. 分别存储位置: *.jar:库 /build/intermediates/bundles/debug(release)/classes.jar *.aar:库 /build/outputs/aar/libraryname.aar .jar 与 .aar的区别 从名称上来讲,一个是java application resource:一个是android application resource: 那

  • Android 中动态加载.jar的实现步骤

    首先第一个是 jar 文件的制作,Java 里面直接把 .class 文件打包到 .jar 文件里面就可以了,但是 Android 的 Dalvik VM 是不认 Java 的 byte code 的,所以不能直接这么打包,而要用 dx 工具转成 Dalvik byte code 才可以.当然,dx 工具转了之后,jar 包里面就不 是 .class 文件了,而是 .dex 文件. 第二个是,Android 里面虽然也提供了 URLClassLoader 的实现,但是并不能用.要动态加载其它类,

  • 基于将Android工程做成jar包和资源文件的解决方法

    需要特别注意的是,以jar包和资源包方式提供给第三方开发者,我们的工程的代码中就不能使用类似于R.layout.main.R.string.name等等这样的方式来引用资源了. 为此,我们就不能直接使用R文件,而是要通过字段名称来动态的获取资源的id,再来使用. 以下封装了一个类,可以通过字段名称动态获取id. 复制代码 代码如下: package com.arui.util; import android.content.Context; public class ResourceUtil {

  • Android修改jar文件包名的方法分享

    前言 jar 包我们会非常高频率的使用,尤其是用一些其他三方库的时候,往往把 java 代码打包成 jar 文件,方便项目依赖使用. 带来的问题是, 多个jar包容易出现包名冲突. 这时候我们修改 jar 文件的包名是一个比较快速有效的解决办法. 举两个例子,是笔者亲身经历的两个情况. Gson库:这个相信很多人都在使用,但是直接导入 gson 的 jar 包,在 HTC Desire HD 这款手机上会抛出异常(TypeNotFoundException) Jackson库:这也是个 json

  • android杂记:C++文件的添加log方法分享

    1.添加头文件 复制代码 代码如下: #include <utils/Log.h>   //或者  #include <cutils/Log.h> 这个时候可以使用ALOGE/ALOGI/ALOGW 等方法打印出log 不过有些地方不能这么使用,因为依赖libutils libctuils库在mk文件见添加如下依赖编译即可 复制代码 代码如下: #LOCAL_MODULE := ... ...   #base_intermediates := $(call local-interm

  • Android获取、更改包名的小技巧分享(超实用)

    前言 小菜因为工作需要,经常需要一套代码修改很多次包名,虽然不是什么技术活,但是小菜的用的次数多了就有了一点点小技巧分享给大家,下面话不多说了,来一起看看详细的介绍吧. 方法如下: 1. 如果源码是在本机电脑中,首先找到源码多位置,例如:由包名 com.aaa.bbb 修改为包名 com.ccc.ddd,可以直接重命名,本地修改: 2. AndroidStudio 打开本项目: 3. 删除 .gradle: 4. 把 build.gradle 中 appicationId 替换为新的包名: 5.

  • Android通过aapt命令获取apk详细信息(包括:文件包名,版本号,SDK等信息)

    公司运维问我怎么在windows上安装模拟器,我你说你安装模拟器干什么?他说,我安装模拟器查看app的包名这些信息做统计. 我顿时想,有必要这样折腾么? 我然后就给他装了Android SDK通过build-tools下面的aapt.exe文件执行命令即可得到所有apk信息. aapt命令 aapt l[ist] [-v] [-a] file.{zip,jar,apk} List contents of Zip-compatible archive. aapt d[ump] [--values]

  • 把Java程序打包成jar文件包并执行的方法

    本文介绍了把Java程序打包成jar文件包并执行的方法,分享给大家,具体如下: 1.首先要确认自己写的程序有没有报错. 2.第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project 打包步骤: 1.在项目上,右键,选择Export. 2.进入到下图界面,选择Java 下面的JAR file 3.选择项目,确认必要的文件是否选中,选择保存jar文件包的路径,如下图 4.完成步骤3之后,点击Next,进入如下图界面: 5.直接点Next,进入下面的界面

  • bat批处理批量修改文件扩展名的方法

    有的时候我们可能会遇到,在一个文件夹内有很多个文件,我们需要修改这些文件的扩展名,当然我们可以一个一个的修改,可是如果有很多文件,那就很麻烦了,所以今天就教大家批量修改文件扩展名的方法,希望大家能够灵活运用. 这里假设你要把扩展名为.gif的文件都改成.jpg格式,那么具体方法如下: 1.首先进入需要改扩展名的文件夹内新建一个记事本 2.在记事本中输入如下内容 复制代码 代码如下: ren *.gif *.jpg 3.将记事本的扩展名改名为.bat 4.双击运行bat文件即可批量将该文件夹下的所

  • C#获取并修改文件扩展名的方法

    本文实例讲述了C#获取并修改文件扩展名的方法.分享给大家供大家参考.具体分析如下: 这里使用C#编程的方法改变文件扩展名的文件,必须使用Path类. Path类用来解析文件系统路径的各个部分.静态方法Path.ChangeExtension方法可以用来改变文件扩展名.可用Path.GetExtension方法可用来取得的文件扩展名. 复制代码 代码如下: string filePath = @"c:\file.txt"; Console.WriteLine(filePath); Con

  • PHP实现批量修改文件后缀名的方法

    本文实例讲述了PHP实现批量修改文件后缀名的方法.分享给大家供大家参考.具体如下: /** * 批量修改文件后缀名 * @param $path 文件夹路径 * @param $sext 原文件后缀名 ($sext=all说明整个目录的所有文件) * @param $dext 目的文件后缀名 * @return void */ function foreachDir($path,$sext,$dext){ $handle=opendir($path); if($handle){ while (f

  • Android开发实现根据包名判断App运行状态的方法

    本文实例讲述了Android开发实现根据包名判断App运行状态的方法.分享给大家供大家参考,具体如下: 前面讲过Android开发判断一个app应用是否在运行的方法,这里实现获取指定包名的 APP 是否还在后台运行,判断 APP 是否存活. 背景 可以根据 App 是否有 Service 分两类情况处理: ① 没有 Service ② 有 Service 对于没有 Service 的 App,程序一旦切换到后台,可能很快就被回收了,这里使用 ActivityManager.getRunningT

  • python文件操作之批量修改文件后缀名的方法

    1.引言 需要把.dat 格式 转化成 .txt格式 2.实现 ##python批量更换后缀名 import os # 列出当前目录下所有的文件 files = os.listdir('.') #print('files',files) for filename in files: portion = os.path.splitext(filename) # 如果后缀是.dat if portion[1] == ".dat": # 重新组合文件名和后缀名 newname = porti

随机推荐