Giter VIP home page Giter VIP logo

rabbit-client's Introduction

version license androidx

功能列表

应用测速

可以准确统计应用Applicaiton创建耗时、应用冷启动耗时和页面inflate耗时&完全渲染耗时

FPS分析

可以实时显示FPS并支持分页面分析FPS

代码扫描

编译时扫描出一些敏感函数(比如耗时函数)

慢函数检测

编译时插桩,准确的统计每一个函数的耗时,并显示运行时调用堆栈。

网络请求监控

监控App网络请求,可以很方便的查看返回的json数据

内存分析

实时显示应用的内存并支持分页面分析内存状态

应用crash捕获

支持捕获java层异常

apk分析与优化

可以准确的分析出apk中的大图、重复文件、apk包大小与内容组成

自定义UI

可以方便的接入应用的“后门”

数据上报

支持上报所有监控数据, 也支持自定义数据上报逻辑

极高的可配置性

提供了众多配置项,可以灵活的检测应用的性能问题

实现原理

实现原理相关文章见:Rabbit实现原理剖析

贡献代码

如果你对rabbit比较感兴趣,或者发现rabbit还有一些功能不够完善,欢迎提pr参与到rabbit的开发中!

License

Rabbit is under the MIT license. See the LICENSE file for details

体验包

点击下载

rabbit-client's People

Contributors

susionsuc avatar tanghuaizhe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rabbit-client's Issues

页面测速是否支持包含fragment

看了框架,测速这一块好像不支持fragment比如像app主界面底部tab对应的fragment该怎么测速,还有那种activity中有viewpager+fragment怎么弄。

use gradle build tool

Most Android developments now use Android Studio,so building with Gradle is more friendly.

编译失败了……

Task :app:transformClassesWithRabbit-last-transformForJekensDebug FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:transformClassesWithRabbit-last-transformForJekensDebug'.

java.lang.SecurityException: SHA-256 digest error for org/bouncycastle/LICENSE.class

FPS监控相关

ChoreographerMonitorCenter 类的 removeDetailedFrameUpdateListener 方法是用于关闭FPS分析功能的,方法内部仍然写了 detailedFrameUpdateMonitor.startMonitor()

慢方法统计-为什么有些方法没有统计到start?

image

反编译的代码:
`
public class RabbitBaseActivity
extends AppCompatActivity
{
private HashMap _$_findViewCache;

private final void setStatusBarColor(Window paramWindow, int paramInt)
{

if (Build.VERSION.SDK_INT >= 23)
{
  paramWindow.setStatusBarColor(paramInt);
  paramWindow = paramWindow.getDecorView();
  Intrinsics.checkExpressionValueIsNotNull(paramWindow, "window.decorView");
  paramWindow.setSystemUiVisibility(8192);
}
MethodTracer.recordMethodEnd("com.susion.rabbit.demo.RabbitBaseActivity&setStatusBarColor()");

}
}
`

Android10内存监控适配

你好,Android10内存监控时候
我用了这两个方法
mActivityManager?.getProcessMemoryInfo(intArrayOf(Process.myPid())) ?: return 0
Debug.getMemoryInfo(info)
结果两个方法都是每隔5分钟才会刷新一次,请问这个应该怎么办啊
我看rabbit里面好像没有做适配

rabbit功能讨论

类似微信内存优化实践说的
“针对上述特点,我们加入了一个针对 Bitmap 的高性价比监控:在接口层中将所有被创建出来的 Bitmap 加入一个 WeakHashMap,同时记录创建 Bitmap 的时间、堆栈等信息,然后在适当的时候查看这个 WeakHashMap 看看哪些 Bitmap 仍然存活来判断是否出现 Bitmap 滥用或泄漏。”

主要的做法就是做个BigImageMonitor,然后提供接口给到业务方,业务方在创建bitmap,或者用图片库加载大图后,将bitmap传给 BigImageMonitor,Monitor将bitmap以及相关信息记录,在达到内存阈值的时候上传。

运行的时候报错

com.android.build.gradle.internal.pipeline.TransformTask$2$1 cannot be cast to org.gradle.api.internal.AbstractTask

Fragment 导航切换空指针

底部导航栏Fragment通过replace方式切换,app crash
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.fragment.app.FragmentManagerImpl.isDestroyed()' on a null object reference
at androidx.fragment.app.Fragment.performDetach(Fragment.java:2849)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1034)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1310)
at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2659)
at androidx.fragment.app.FragmentManagerImpl.dispatchDestroy(FragmentManagerImpl.java:2644)
at androidx.fragment.app.Fragment.performDestroy(Fragment.java:2825)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1028)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:434)
at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
at android.os.Handler.handleCallback(Handler.java:907)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

Android 11 FPS 的适配问题

使用反射获取Choreographer 对象中的mLock 对象,在Android 11中已被禁止。所以在Android 11之后系统中,获取FPS 的指标存在适配问题

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.