├── .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 | --------------------------------------------------------------------------------