wendellq89 / MonitorDemo

Android 无埋点框架 使用ASM插桩实现

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Monitor

Android无埋点数据收集框架。

参考博文技术点,使用ASM字节码插桩实现具体埋点功能。使用主要由下面的架包完成。

LibMonitor

具体实现埋点工具类。当前版本LibMonitor Version

buildSrc

gradle插件,实现字节码插桩。当前版本buildSrc Version

插桩前代码

protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        TextView textView = (TextView) findViewById(R.id.text);
        Button button1 = (Button) findViewById(R.id.button1);
        Button button2 = (Button) findViewById(R.id.button2);
        Button button3 = (Button) findViewById(R.id.button3);

        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            }
        });


        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });
    }

插桩后

protected void onCreate(@Nullable Bundle savedInstanceState) {
        TraceUtil.onActivityCreate(this);
        super.onCreate(savedInstanceState);
        this.setContentView(2131361820);
        TextView textView = (TextView)this.findViewById(2131230861);
        Button button1 = (Button)this.findViewById(2131230748);
        Button button2 = (Button)this.findViewById(2131230749);
        Button button3 = (Button)this.findViewById(2131230750);
        textView.setOnClickListener(new OnClickListener() {
            public void onClick(View var1) {
                TraceUtil.onActivityClick(var1);
            }
        });
        button2.setOnClickListener(new OnClickListener() {
            public void onClick(View var1) {
                TraceUtil.onActivityClick(var1);
            }
        });
    }

可以看到插桩后onCreate方法中多了TraceUtil.onActivityCreate(this); ; onClick中多了TraceUtil.onActivityClick(var1),即达到效果。

About

Android 无埋点框架 使用ASM插桩实现


Languages

Language:Kotlin 54.1%Language:Groovy 23.8%Language:Java 22.1%