├── .gitignore
├── README.md
└── RobustInsertCodeTools
├── .classpath
├── .fatjar
├── .project
├── .settings
└── org.eclipse.jdt.core.prefs
├── file
├── jarbattools.bat
└── tmp
│ └── classes.dex
└── src
└── cn
└── wjdiankong
├── example
└── Person.java
├── main
├── InsertClassFile.java
├── InsertCodeUtils.java
├── InsertJarFile.java
├── RobustAsmUtils.java
└── Utils.java
├── patch
└── ChangeQuickRedirect.java
└── robust
└── utils
└── PatchProxy.java
/.gitignore:
--------------------------------------------------------------------------------
1 | *.class
2 |
3 | # Mobile Tools for Java (J2ME)
4 | .mtj.tmp/
5 |
6 | # Package Files #
7 | *.jar
8 | *.war
9 | *.ear
10 |
11 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
12 | hs_err_pid*
13 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # RobustInsertCodeTools
2 | 美团Robust框架自动插入代码工具
3 |
4 | # InsertClassFile
5 | 这个是用于处理单个class文件工具类
6 |
7 | # InsertJarFile
8 | 这个是用于处理jar文件工具类
9 |
--------------------------------------------------------------------------------
/RobustInsertCodeTools/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RobustInsertCodeTools/.fatjar:
--------------------------------------------------------------------------------
1 | #Fat Jar Configuration File
2 | #Fri Dec 16 14:33:19 GMT+08:00 2016
3 | onejar.license.required=true
4 | manifest.classpath=
5 | manifest.removesigners=true
6 | onejar.checkbox=false
7 | jarname=robusttools_classfile.jar
8 | manifest.mergeall=true
9 | manifest.mainclass=cn.wjdiankong.main.InsertClassFile
10 | manifest.file=
11 | jarname.isextern=false
12 | onejar.expand=
13 | excludes=~cn/~wjdiankong/~example/;~cn/~wjdiankong/~main/~InsertJarFile.class
14 | includes=
15 |
--------------------------------------------------------------------------------
/RobustInsertCodeTools/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | RobustInsertCodeTools
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/RobustInsertCodeTools/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
6 | org.eclipse.jdt.core.compiler.compliance=1.6
7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
11 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
12 | org.eclipse.jdt.core.compiler.source=1.6
13 |
--------------------------------------------------------------------------------
/RobustInsertCodeTools/file/jarbattools.bat:
--------------------------------------------------------------------------------
1 | cd %1
2 | jar cvf classes.jar .
3 |
--------------------------------------------------------------------------------
/RobustInsertCodeTools/file/tmp/classes.dex:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fourbrother/RobustInsertCodeTools/65b5b1186e1adf40b786638c1b6e7431113a9b6d/RobustInsertCodeTools/file/tmp/classes.dex
--------------------------------------------------------------------------------
/RobustInsertCodeTools/src/cn/wjdiankong/example/Person.java:
--------------------------------------------------------------------------------
1 | package cn.wjdiankong.example;
2 |
3 | import java.util.Date;
4 | import java.util.List;
5 | import java.util.concurrent.TimeUnit;
6 |
7 | public class Person {
8 |
9 | public static String toStr(String str) {
10 | return "aaa";
11 | }
12 |
13 | public static String desc() {
14 | return "aaa";
15 | }
16 |
17 | public void setMoney(double value, int i, Date date1, Date date) {
18 | return;
19 | }
20 |
21 | public void setInfo(String name, float price, List infoList) {
22 | }
23 |
24 | public Object getValue(float i, TimeUnit unit) {
25 | return 0;
26 | }
27 |
28 | public int[] test2() {
29 | return null;
30 | }
31 |
32 | public static void test1() {
33 | }
34 |
35 | public Object get(long timeout, TimeUnit unit) {
36 | return null;
37 | }
38 |
39 | public void refreshState(boolean playing, long position, int transportControls) {
40 |
41 | }
42 |
43 | public static void setState(Object rccObj, int state, long position, float speed, long updateTime) {
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/RobustInsertCodeTools/src/cn/wjdiankong/main/InsertClassFile.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fourbrother/RobustInsertCodeTools/65b5b1186e1adf40b786638c1b6e7431113a9b6d/RobustInsertCodeTools/src/cn/wjdiankong/main/InsertClassFile.java
--------------------------------------------------------------------------------
/RobustInsertCodeTools/src/cn/wjdiankong/main/InsertCodeUtils.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fourbrother/RobustInsertCodeTools/65b5b1186e1adf40b786638c1b6e7431113a9b6d/RobustInsertCodeTools/src/cn/wjdiankong/main/InsertCodeUtils.java
--------------------------------------------------------------------------------
/RobustInsertCodeTools/src/cn/wjdiankong/main/InsertJarFile.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fourbrother/RobustInsertCodeTools/65b5b1186e1adf40b786638c1b6e7431113a9b6d/RobustInsertCodeTools/src/cn/wjdiankong/main/InsertJarFile.java
--------------------------------------------------------------------------------
/RobustInsertCodeTools/src/cn/wjdiankong/main/RobustAsmUtils.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fourbrother/RobustInsertCodeTools/65b5b1186e1adf40b786638c1b6e7431113a9b6d/RobustInsertCodeTools/src/cn/wjdiankong/main/RobustAsmUtils.java
--------------------------------------------------------------------------------
/RobustInsertCodeTools/src/cn/wjdiankong/main/Utils.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fourbrother/RobustInsertCodeTools/65b5b1186e1adf40b786638c1b6e7431113a9b6d/RobustInsertCodeTools/src/cn/wjdiankong/main/Utils.java
--------------------------------------------------------------------------------
/RobustInsertCodeTools/src/cn/wjdiankong/patch/ChangeQuickRedirect.java:
--------------------------------------------------------------------------------
1 | package cn.wjdiankong.patch;
2 |
3 | public interface ChangeQuickRedirect {
4 |
5 | public boolean isSupport(String methodSignature, Object[] paramArrayOfObject);
6 |
7 | public Object accessDispatch(String methodSignature, Object[] paramArrayOfObject);
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/RobustInsertCodeTools/src/cn/wjdiankong/robust/utils/PatchProxy.java:
--------------------------------------------------------------------------------
1 | package cn.wjdiankong.robust.utils;
2 |
3 | import cn.wjdiankong.patch.ChangeQuickRedirect;
4 |
5 | public class PatchProxy {
6 |
7 | public static boolean isSupport(Object obj, Object thisObj, ChangeQuickRedirect redirect, boolean isFlag){
8 | return redirect.isSupport("", new Object[]{});
9 |
10 | }
11 |
12 | public static Object accessDispatch(Object obj, Object thisObj, ChangeQuickRedirect redirect, boolean isFlag){
13 | return redirect.accessDispatch("", new String[]{});
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------