Gradle
Error:Execution failed for task ‘:app:dexApk_debgDebug’.
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process command C:\Program Files\Java\jdk1.8.0_45\bin\java.exe’ finished with non-zero exit value 1
字节码构造。
java.exe finished with non-zero exit value 2; 包冲突
LeakCanary
git:https://github.com/square/leakcanary
中文翻译:http://www.liaohuqiu.net/cn/posts/leak-canary-read-me/
- 接入
dependencies {
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
}
public class ExampleApplication extends Application {
public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}
- 效果
内部类
public class Activity {
private void setView() {
System.out.println("setView");
}
/** 模拟联网返回后的handle,生成类名Activity$Handle */
private class Handle {
private void onSuccess() {
setView();
}
}
public void checkData() {
new Handle().onSuccess();
}
}
public class ActivityThread {
public static void main(String[] args) {
Activity activity = new Activity();
activity.checkData();
}
}
javap
分析字节码工具
javap -p Activity$Handle
class com.wacai.innerclass.Activity$Handle {
final com.wacai.innerclass.Activity this$0;
private com.wacai.innerclass.Activity$Handle(com.wacai.innerclass.Activity);
private void onSuccess();
com.wacai.innerclass.Activity$Handle(com.wacai.innerclass.Activity, com.wacai.innerclass.Activity$Handle);
static void access$1(com.wacai.innerclass.Activity$Handle);
}
javap -p Activity.class
public class com.wacai.innerclass.Activity {
public com.wacai.innerclass.Activity();
private void setView();
public void checkData();
static void access$0(com.wacai.innerclass.Activity);
}