scriptHome=`pwd`
legoPlatHome=$scriptHome/LEGO_V100R001
echo $scriptHome > scriptHome
echo $legoPlatHome > legoPlatHome
log=$scriptHome/changelog
debug()
{
echo $1 >> $log
}
showMessage()
{
echo $1
debug $1
}
checkFile()
{
if [ $# != 1 ]
then
debug "please check the input file parameter !!!!!!!!!!!!!!"
return 1;
fi;
if [ ! -f $1 ]
then
debug "please check $1 !!!!!!!!!!!!!!!!"
return 1;
fi;
return 0;
}
checkDir()
{
if [ $# != 1 ]
then
debug "please check the input dir parameter !!!!!!!!!"
return 1;
fi;
if [ ! -d $1 ]
then
debug "please check $1 !!!!!!!!!!!!!!!!"
return 1;
fi;
return 0;
}
#1 new , 2 old
checkTwoFile()
{
if [ $# != 2 ]
then
debug "please check the input two file parameter !!!!!!!!!!"
return 1;
fi;
diff $1 $2
if [ $? != 0 ]
then
debug "the two file $1 $2 are different,please check $1 !!!!!!!!!!!!!!!!! "
return 1;
fi;
}
#$1 the ism replace file's dir,$2 the file name,$3 LEGO dir
replaceFile()
{
if [ ! -f $1/$2 ]
then
debug "Please check the file. $1/$2 does exist."
return 1
fi;
if [ ! -f $1/$2_old ]
then
debug "Please check the file. $1/$2_old does exist."
return 1
fi;
if [ ! -f $3/$2 ]
then
debug "Please check the file. $3/$2 does exist."
return 1
fi;
checkTwoFile $3/$2 $1/$2_old
cp $1/$2 $3
}
getScriptHome()
{
return `pwd`
}
getlegoPlatHome()
{
scriptHome=getScriptHome
return $scriptHome/LEGO_V100R001
}
tmpDir=/opt/`date +'%Y%m%d%I%M%S'`
export tmpDir
initJar()
{
if [ -d $tmpDir ]
then
debug "The dir exists,it should be empty,please modify the scripty."
exit 1;
fi;
mkdir $tmpDir
if [ ! -f $1 ]
then
debug "Please check the file exists $1."
exit 1
fi;
if [ ! -f $2 ]
then
debug "Please check the file exists $2."
exit 1
fi;
bundleName=`echo $2 | awk -F / '{print $NF}'`
debug "begin to change $bundleName."
unzip $2 -d $tmpDir > /dev/null 2>&1
}
zipFile()
{
bundleName=`echo $1 | awk -F / '{print $NF}'`
cd $tmpDir
zip -r $bundleName * > /dev/null 2>&1
bundleDir=`dirname $1`
debug "copy $bundleName to $bundleDir"
mv $bundleName $bundleDir
rm -rf $tmpDir
debug "finish to change $bundleName."
cd $scriptHome
}
replaceFileInJar()
{
replaceFileName=`echo $1 | awk -F / '{print $NF}'`
bundleName=`echo $2 | awk -F / '{print $NF}'`
for f in `find $tmpDir -name $replaceFileName`
do
debug "copying the $replaceFileName to $f"
cp $1 $f
done;
zipFile $2
}
replaceFileInJarAll()
{
initJar $1 $2
replaceFileInJar $1 $2
}
#$1 file , $2 bundle, $3 old file
compareRepalceFileInJar()
{
initJar $1 $2
replaceFileName=`echo $1 | awk -F / '{print $NF}'`
for f in `find $tmpDir -name $replaceFileName`
do
checkTwoFile $f $3
if [ $? = 0 ]
then
debug "copying the $replaceFileName to $f"
cp $1 $f
fi;
done;
zipFile $2
}
分享到:
相关推荐
标题“删除jar包中的指定文件”涉及到的是Java开发中对已打包JAR文件进行操作的知识点。在Java中,JAR(Java Archive)文件是一种归档格式,用于将多个类文件和其他资源组合到一个单一的文件中,方便分发和执行。...
本文将详细介绍如何在不重新编译整个项目的情况下,修改并替换JAR文件中的class文件。 首先,我们要了解JAR文件的结构。JAR(Java ARchive)文件是Java平台上的一个标准归档格式,它包含了一个或多个类文件以及其他...
6. **替换并重新打包**:完成修改后,将修改后的类文件或整个JAR替换回原位置。可以使用`jar`命令行工具或者第三方工具如`7-Zip`来重新打包JAR。确保保持原始的目录结构。 7. **测试修改**:最后,运行你的应用程序...
java实现class的热替换
- Maven和Gradle等构建工具允许你配置如何打包和处理JAR文件中的资源,比如在构建过程中自动处理资源文件的复制和替换。 通过这些方法,开发者可以方便地访问和操作JAR文件内部的文件内容,无论是简单的文本文件...
可以实现jar的热替换。spring的bean动态加载则需要对相应的bean进行动态注册,以及jar与class文件动态加载。测试示例中是spring boot 的部分代码,动态加载的内容为接口实现类,且初始化时加载本地的实现类,动态...
在日常开发中,经常需要使用 jar 命令来替换 jar 包中的文件,但是在使用 WinRAR 解压替换时可能会出现权限问题,这时可以使用 jar 命令来解决问题。 安装 jar 命令 --------------- 要使用 jar 命令,需要先安装 ...
在IT行业中,开发人员经常需要对已编译的.jar文件进行反编译,以便查看其中的源代码。这是因为有时我们可能需要理解别人的代码实现,或者查找某个类或方法的实现细节。Eclipse作为一款强大的Java集成开发环境,提供...
本篇文章将详细讲解如何使用给定的jar包——opencsv-2.3.jar、poi-3.7-20101029.jar以及poi-ooxml-3.7-20101029.jar,来读取xls、CSV和xlsx格式的Excel文件。 首先,让我们关注opencsv-2.3.jar。OpenCSV是一个轻量...
### Java加载.jar包详解 #### 一、Java 类加载机制概览 自 JDK 1.2 版本之后,Java 类加载机制发生了一个重要的变化,引入了一种名为**类加载委托**的概念。这一机制的核心思想在于,如果某个 `ClassLoader` 无法...
6. `commons-fileupload-x.x.x.jar`和`commons-io-x.x.x.jar`:用于文件上传功能。 **Jfinal配置** 1. **项目结构**:通常遵循`WEB-INF`、`src`、`lib`、`web.xml`的标准目录结构。 2. **web.xml配置**:配置Jfinal...
`jdgui_0.3.6`是一个实用的`jar`包解析工具,它提供了图形界面,方便开发者查看`jar`包中的类文件反编译后的源代码。这对于调试、学习第三方库的内部工作原理,或者排查代码问题非常有用。使用`jdgui`,用户只需拖放...
利用swt中的一个获取图片的类SwingResourceManager 来解决将程序打为使用java打包之后,生成的jar包中图片找不着的。这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成...
- **替换原文件**:将加密后的文件替换原有的JAR包中的文件,或者创建一个新的加密过的JAR包。 - **保存密钥**:加密后的JAR包需要对应的密钥才能解密,所以密钥必须安全保存。这可以通过多种方式实现,比如将其...
你可以通过Gradle构建系统来更新,或者在Eclipse中手动替换旧的`android-support-v4.jar`文件。 2. **导入错误**:检查你的代码中是否正确导入了`android.support.v4.content.ContextCompat`包。错误的导入可能导致...
因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有...将local_policy.jar和US_export_policy.jar这两个文件替换%JRE_HOME%\lib\security和%JDK_HOME%\jre\lib\security下原来的文件,注意先备份原文件。
- 使用修改后并编译好的`.class`文件替换jar包中的原始`.class`文件。 6. **重新打包jar** - 进入解压后的根目录,打开命令行工具(cmd)。 - 输入以下命令来重新打包jar文件:`jar cvf <jar包名称>.jar <jar包根...
4. **替换原文件**:将新编译的.class文件替换掉原来JAR包中的对应文件。这一步需要注意保持文件路径和原始文件的完整性,因为JAR文件内部是基于文件路径进行查找的。 5. **打包新JAR**:最后,使用`jar`命令或者...
4. **编译源码**:使用Java编译器将修改后的源码编译成.class文件,替换原jar包中的对应文件。 5. **打包测试**:将修改后的.class文件重新打包成jar,并在实际环境中进行测试,确保改造后功能正常且未引入新的问题...
可以用来自己修改Android手机中的jar包,当然要有root,你懂得~ java -jar baksmali-1.2.6.jar classes.dex -o out/ ...6. 把生成的classes.dex替换3中jar包中的classes.dex文件, push到手机中。重启system_process