通过jarjar.jar来替换jar包名的详细介绍

有时候我们根据一些场景 需要替换第三方jar包的包名,比如Android广告平台sdk,更换他们jar包包名的话,可以防止市场检测到有广告插件,所以,今天就介绍一下如何使用jarjar.jar工具来替换jar包的包名

一、首先下载jarjar.jar工具

地址在:https://code.google.com/p/jarjar/

二、下载完以后,使用cmd命令--打开到它所在的目录,它有三个命令:

(1)java –jar jarjar.jar   查看帮助信息的

(2)java –jar jarjar.jar strings <cp> 这个是查看jar包里面所有包名的。

例如:拿多盟广告的jar包为例,使用命令如下:

java -jar jarjar.jar strings domob_android_sdk.jar

(3)更换包名的命令为:

java -jar jarjar.jar process <rulesFile> <inJar>  <outJar>

注意事项:这里面有一个重要的东西是rulesFile,就是定义一个替换规则。injar就是指要替换的jar包,outjar就是替换完要输出的jar包

rulesFile直接用.txt文档写就行,

rulesFile有三種指令,分別如下:

1. rule用來取代Package的名称。

rule pattern result

2.zap用來移除符合名称的Package。

zap pattern

3.keep只会保留符合的Package的名称,其他的則會刪除。如果和zap一起使用,將會在zap执行完之后才執行。

keep pattern

备注: pattern為要比對的字串,可以使用「*」和「**」來表示任意的Package名稱。「*」可以代表一层的Package,「**」可以代表多层的Package。

result為要取代成的字串,可以使用「@1」、「@2」这类的符号表示要使用第几个pattern的「*」或「**」所代表的字串。

如果要将Jar包內的「cn.domob」名称全都替換成「com.google」,可以编写以下的rulesFile:

rule cn.domob.** [email protected]

三、正式替换包名

命令为(我所有的jar包放到同一个目录下了,所以可以使用 ./ ):

java -jar jarjar.jar process ./rule.txt domob_android_sdk.jar ./google.jar

已经ok。

时间: 2024-08-30 07:48:58

通过jarjar.jar来替换jar包名的详细介绍的相关文章

不同的jar里边相同的包名类名怎么区别导入

今天在做项目的时候遇到了一个很有意思的问题,折磨了我很长时间,不过最终还是解决了,特留此文纪念一下. 遇到的问题: 同样一段代码,在同事那就好使,在我这就找不到一个方法.引用的包也都是相同的,这种问题还是第一次遇到,怎么办呢? 找啊找啊找原因,查看引用的包,才发现我所引用的包名和同事引用的包名是相同的,不同的是我两引用的包不是一个jar.也就是说不同的jar里包含了相同的包名和类名. 问题的原因找到了,那怎么解决呢?怎么指定调用自己需要的jar中的包呢? 要解决这个问题,还得先了解jvm加载的方

Thinkphp框架拓展包使用方式详细介绍--验证码实例(十一)

拓展压缩包的使用方式详细介绍 1:将拓展包解压:ThinkPHP3.1.2_Extend.zip   --> 将其下的 \Extend  文件全部复制 2:将复制的文件放入项目中 E:\wamp\www\thinkphp\ThinkPHP\Extend(安装的时候这里面是空文件),你自己的项目目录 即可 =============================以下是,拓展包中验证码的使用======================================== 比如用到拓展包的验证码:(

深度包检测(DPI)详细介绍

目录 简介 背景 流量识别 常用功能 具体功能 做法 特征识别 架构举例 部署方式 串接方式 并接方式 存在问题 检测引擎举例 参考文献 简介 DPI(Deep Packet Inspection)深度包检测技术是在传统IP数据包检测技术(OSI L2-L4之间包含的数据包元素的检测分析)之上增加了对应用层数据的应用协议识别,数据包内容检测与深度解码. 既可以检测2~4层,又可以检测应用层. 背景 安全问题.流量识别.大数据(海量数据挖掘),推动网络识别技术的发展 流量识别 指将网络中的数据流识

Android 编程下如何修改 jar 文件的包名

首先我们要说说为什么要修改 jar 文件的包名,jar 包我们会非常高频率的使用,尤其是用一些其他三方库的时候,往往把 java 代码打包成 jar 文件,方便项目依赖使用.笔者在开发过程中遇到过一些问题,是由于 jar 文件里面的包名和项目或者运行时环境的引用文件包名上存在冲突导致的,这时候我们修改 jar 文件的包名是一个比较快速有效的解决办法.举两个例子,是笔者亲身经历的两个情况. Gson库:这个相信很多人都在使用,但是直接导入 gson 的 jar 包,在 HTC Desire HD

多渠道打包,生成不同包名的包

来对多渠道打包,并生成不同的包名的知识点做个总结.需要生成不同包名的原因是为了运营的ASO. 方法: 1.直接建立渠道的文件夹,修改Manifest里面的包名 2.利用占位符 当然上面两种方法各有优劣,最后说一下他们的各自的一些特点. 首先来说第一种方法,步骤: 1.根据需要生成多少个包名的包建立和main同级的文件夹. 例如:我这里需要两个不同包名的包,那就需要建立两个不同渠道的文件夹. 2.在文件夹里面新建Maifest文件 因为包名是在Manifest文件里面定义的,所以需要建立Manif

jar包名修改工具

jar包名修改工具 软件传送门:链接: https://pan.baidu.com/s/12StRdEkYGmMn1DuNSquXSw   提取码: i9w1 闲暇之余,利用jarjar.jar写了一个小工具,没啥技术含量,就是为了方便平时使用,在这里分享一下 : 工具较为简单,基本上是傻瓜式操作,选择jar文件,输入原包名,目标包名,点击修改即可(更多功能请直接用原包修改). 测试修改class.jar 确保安装了sdk并配置了环境变量,cmd或者PowerShell切换到jarPackage

ZT : JAVA和JAVAC 命令行;java 带有包名编译并运行,附带外部依赖jar包运行

ZT: https://blog.csdn.net/just3do/article/details/68957618 有时候写个小测试,不想开idea,就用cmder,但是老忘记怎么编译,就copy别人的一份博客. javac和java命令行中的-classpath选项 这是个很基础的问题,但是因为基本上都是用现有的IDE工具 来开发java程序,所以很少有人意识到这一点.javac-classpath,设定要搜索类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所

linux_直接在linux里面替换jar包里的某个文件

场景描述:jar包(eureka-server-1.0.0.jar)中替换文件application.properties的内容 查询需要替换的文件在jar中的位置 jar tvf *****.jar | grep {fileName} jar tvf eureka-server-1.0.0.jar | grep application.properties 将文件解压到当前目录 jar xvf ****.jar {filePath} 此命令将文件所在目录解压出来,会在当前目录生成一个新的文件夹

使用jar命令打war包

1.打开cmd进入web项目发布文件夹 2.,输入jar -cvf qxpt.war * (*表示当前目录下所有子目录) 3,回车等待执行完成就可以了 4.如果web项目发布文件夹有多个文件夹,而打war包只需其中一个可以输入jar -cvf qxpt.war webapp 5.查看打的war包输入jar -tf qxpt.war回车等待执行完成就可以了 6.如果修改了某个文件想替换war包的旧文件输入jar -uf qxpt.war (webapp\WEB-INF\classes\com\ic