使用场景是什么:
快速、方便编辑 jar,插入代码。
有一个可接入的 jar
这里为了操作便捷,我简单封装一点代码生成一个 jar 文件。代码不复杂,只有简单的日志输出。编码环境使用 VSCODE,该工具导出 jar 还是比较便捷。
VSCode 导出 jar:
打开 JAVA PROJECTS,接着选中当前需要导出的项目,最后一键点击右边的箭头 -->,稍等片刻项目同级目录下就有一个 jar 生成。
接入说明:
//初始化
GCSDK.getInstance().init(ChannelType.TYPE_VIVO, new SdkInitListener() {
@Override
public void initBegin() {
}
@Override
public void initFail(String msg, int code) {
}
@Override
public void initSuccess() {
}
});
//登录
GCSDK.getInstance().login();
//登出
GCSDK.getInstance().logout();
//退出游戏
GCSDK.getInstance().exitGame();
Demo 开始接入
现在手上有两个 jar,一个是我们需要运行的(宿主),一个是我们要接入的(依赖)。
1⃣️ 解压获得 class 文件: jar -xvf ****.jar
首先使用 jar 命令分别把这两个文件转换获得 class
依赖 jar
宿主 jar
两个 class 文件合并:
MANIFEST.MF 文件取宿主中的,因为需要启动类,其他信息看情况取舍
宿主 MANIFEST.MF 内容
Manifest-Version: 1.0
Main-Class: com.demo.jsonlili.GameApp
2、修改宿主 class 文件,加入接入代码
针对单个 class 文件修改,我借助 Recaf工具。
启动编辑工具:
java -jar recaf-2.21.13-J8-jar-with-dependencies.jar
没有导包是不正确的,找不到类。
正确导包:
修改完毕,导出 jar
运行检验,结果正确
字节码编辑工具不止一个
完成类似场景的手段、方案也不在少数
莫要纠结一处,了解更多有何不可呢