Git Product home page Git Product logo

androiddevmetrics's People

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

androiddevmetrics's Issues

Don't override non-singleton values

Repeated dependency creation overrides values for previous metrics (and subdependencies are lost). Spotted in: #1

It means that value:
AnalyticsManager (not a singleton)
|__Crashlytics
|__GoogleAnalytics
|__OtherAnalyticsClass

will be replaced with:

AnalyticsManager
|__no args

When graph will be asked again for AnalyticsManager

Add option to disable plugin for certain flavors

There should be an option to disable plugin for certain product flavors, for example I use a specialized flavor for instrumented testing, where I need all debug tools to be off, since their notifications and actions might interfere with Espresso tests. Right now, if the plugin is not initialized in Application for every debug product flavor, the app will throw a runtime exception:

java.lang.RuntimeException: MethodsTracingManager must be initialized by init(..)

It means that something like this:

if("debug".equals(BuildConfig.BUILD_TYPE) && !"mock".equals(BuildConfig.FLAVOR)) {
    AndroidDevMetrics.initWith(this);
}

is not possible, as the mockDebug build variant will throw the aforementioned exception.

OutOfMemoryError

I'm seeing this OOM after ~6 hours of running an application

Clamp target GC heap from 96.827MB to 96.000MB
GC_BEFORE_OOM freed 73K, 8% free 90855K/98304K, paused 566ms, total 566ms
Out of memory on a 2097168-byte allocation.
"MyInteractorThread" prio=5 tid=17 RUNNABLE
  | group="main" sCount=0 dsCount=0 obj=0x42273ad8 self=0x556c8008
  | sysTid=12621 nice=0 sched=0/0 cgrp=apps/bg_non_interactive handle=1431377544
  | state=R schedstat=( 0 0 0 ) utm=113074 stm=11704 core=1
  at java.util.HashMap.makeTable(HashMap.java:~569)
  at java.util.HashMap.doubleCapacity(HashMap.java:589)
  at java.util.HashMap.put(HashMap.java:419)
  at com.frogermcs.androiddevmetrics.internal.metrics.InitManager.putInitMetric(InitManager.java:60)
  at com.frogermcs.androiddevmetrics.internal.metrics.InitManager.addInitMetric(InitManager.java:55)
  at com.frogermcs.androiddevmetrics.aspect.Dagger2GraphAnalyzer.logAndExecute(Dagger2GraphAnalyzer.java:71)
  at com.mycompany.dagger.PreferencesModule.provideMyPrefsProvider(PreferencesModule.java:29)
  at com.mycompany.dagger.PreferencesModule_ProvideMyPrefsProviderFactory.get(PreferencesModule_ProvideMyPrefsProviderFactory.java:24)
  at com.mycompany.dagger.PreferencesModule_ProvideMyPrefsProviderFactory.get(PreferencesModule_ProvideMyPrefsProviderFactory.java:8)
  at com.mycompany.dagger.DaggerAppComponent.myPrefsPreferences(DaggerAppComponent.java:370)
  at com.mycompany.bluetooth.response_processing.DataBlockMediator.processDataBlock(DataBlockMediator.java:93)
  at com.mycompany.bluetooth.response_processing.DataBlockMediator.onNewDataBlock(DataBlockMediator.java:53)
  at com.mycompany.bluetooth.ResponseMediator.onNewDataBlock(ResponseMediator.java:162)
  at com.mycompany.bluetooth.response_processing.processor.shared.SharedDataProcessor.propagateDataBlock(SharedDataProcessor.java:66)
  at com.mycompany.bluetooth.response_processing.processor.shared.SharedDataProcessor.process(SharedDataProcessor.java:57)
  at com.mycompany.bluetooth.ResponseMediator.onNewParsedMessage(ResponseMediator.java:98)
  at com.mycompany.bluetooth.ResponseMediator$$Lambda$1.accept((null):-1)
  at io.reactivex.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:85)
  at io.reactivex.processors.UnicastProcessor.drainRegular(UnicastProcessor.java:213)
  at io.reactivex.processors.UnicastProcessor.drain(UnicastProcessor.java:289)
  at io.reactivex.processors.UnicastProcessor.onNext(UnicastProcessor.java:352)
  at com.mycompany.bluetooth.response_processing.parser.ResponseParser.onFinalState(ResponseParser.java:139)
  at com.mycompany.bluetooth.response_processing.parser.ResponseParser.parseByte(ResponseParser.java:127)
  at com.mycompany.bluetooth.response_processing.parser.ResponseParser$$Lambda$1.accept((null):-1)
  at io.reactivex.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:85)
  at io.reactivex.processors.PublishProcessor$PublishSubscription.onNext(PublishProcessor.java:316)
  at io.reactivex.processors.PublishProcessor.onNext(PublishProcessor.java:198)
  at com.mycompany.bluetooth.response_processing.parser.ResponseParser.lambda$parse$0(ResponseParser.java:108)
  at com.mycompany.bluetooth.response_processing.parser.ResponseParser$$Lambda$2.accept((null):-1)
  at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onNext(ObservableDoOnEach.java:95)
  at io.reactivex.internal.operators.observable.ObservableRange$RangeDisposable.run(ObservableRange.java:64)
  at io.reactivex.internal.operators.observable.ObservableRange.subscribeActual(ObservableRange.java:35)
  at io.reactivex.Observable.subscribe(Observable.java:10841)
  at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
  at io.reactivex.Observable.subscribe(Observable.java:10841)
  at io.reactivex.Observable.subscribe(Observable.java:10827)
  at io.reactivex.Observable.subscribe(Observable.java:10705)
  at com.mycompany.bluetooth.response_processing.parser.ResponseParser.parse(ResponseParser.java:109)
  at com.mycompany.bluetooth.ResponseMediator.processResponse(ResponseMediator.java:71)
  at com.mycompany.bluetooth.MyFacadeImpl$BTHandler.handleMessage(MyFacadeImpl.java:529)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:136)
  at android.os.HandlerThread.run(HandlerThread.java:61)

We provide preferences through Dagger2 and we were not using @singleton, so I'm guessing that androiddevmetrics annotated that initialization, and since we receive information every 250ms and update several preferences, it quickly exhausted the heap.

In any case, I'd say that shouldn't be happening. While for other apps it may not cause an OOM, it definitely is using memory.

Library crashed app, Theme.AppCompat.

Hi! I want to let you know that library crashed my app with following stack-trace:

Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
       at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:340)
       at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:309)
       at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:273)
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
       at pl.polskikraft.android.android.activity.HomeActivity_.setContentView(HomeActivity_.java:102)
       at pl.polskikraft.android.android.activity.HomeActivity_.onCreate_aroundBody0(HomeActivity_.java:78)
       at pl.polskikraft.android.android.activity.HomeActivity_$AjcClosure1.run(HomeActivity_.java:1)
       at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)
       at com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer.logAndExecute(ActivityLifecycleAnalyzer.java:62)
       at pl.polskikraft.android.android.activity.HomeActivity_.onCreate(HomeActivity_.java:74)

Metrics did not show unless I added activity to manifest

Not sure why our application was different, but clicking on the notification did nothing in our application unless I added activity to the manifest as in:

<activity android:name="com.frogermcs.androiddevmetrics.internal.ui.MetricsActivity"/>

Wonder if it is because we use an application Id suffix:

buildTypes {
    debug {
        applicationIdSuffix '.debug'

Layout can have negative time

Sometimes, the layout step takes less than 0 ms. It should be impossible.

captura de pantalla 2017-07-07 13 41 12

Just for the information: I tested it on emulatior API19 and API23.

Thanks for your work!

Attempt to read from field in androiddevmetrics on a null object reference

I am trying to implement frogermcs/AndroidDevMetrics library in my project
This is the link: https://github.com/frogermcs/AndroidDevMetrics
I followed these steps to integrate AndroidDevMetrics into my project.
Added these in build.gradle

buildscript {
  repositories {
    jcenter()
  }

  dependencies {
    classpath 'com.frogermcs.androiddevmetrics:androiddevmetrics-plugin:0.7'
  }
}

apply plugin: 'com.android.application'
apply plugin: 'com.frogermcs.androiddevmetrics

Then in your Activity class:

@Override
public void onCreate() {
	super.onCreate();
	//Use it only in debug builds
	if (BuildConfig.DEBUG) {
		AndroidDevMetrics.initWith(this);
	}
}

For this when i run my project and came to that activity where init code is. The app crash with the statement:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mycompany.project/com.mycompany.project.activities.LoginActivity}: java.lang.NullPointerException: Attempt to read from field 'int com.frogermcs.androiddevmetrics.internal.metrics.ActivityLifecycleMetrics$ActivityLifecycleMetric.state' on a null object reference

And here are some other logs from middle of logs

Caused by: java.lang.NullPointerException: Attempt to read from field 'int com.frogermcs.androiddevmetrics.internal.metrics.ActivityLifecycleMetrics$ActivityLifecycleMetric.state' on a null object reference at com.frogermcs.androiddevmetrics.internal.metrics.ActivityLifecycleMetrics.logPostOnStart(ActivityLifecycleMetrics.java:88) at com.frogermcs.androiddevmetrics.internal.metrics.ActivityLaunchMetrics.onActivityStarted(ActivityLaunchMetrics.java:43)

Please guide me where i am wrong. or how to solve this issue to getting AndroidDevMetrics into work. Thanks
Gradle Version: 5.0
Android Plugin Version: 3.3.0
AndroidDevMetrics Library Version: 0.7

Fragment-Specific Metrics?

We have a part of our app that uses a single activity and rotates Fragments in and out. Is there a way to leverage ADM's functionality for Fragments instead of the Activity in this scenario?

RuntimeException when launch my app

Hi,
my app crashes with this stack trace.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nicopasso.android.debug/com.nicopasso.android.ui.start.StartingActivity}: java.lang.RuntimeException: MethodsTracingManager must be initialized by init(..)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                                at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                at android.os.Looper.loop(Looper.java:148)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                             Caused by: java.lang.RuntimeException: MethodsTracingManager must be initialized by init(..)
                                                                                at com.frogermcs.androiddevmetrics.internal.MethodsTracingManager.checkInitialized(MethodsTracingManager.java:90)
                                                                                at com.frogermcs.androiddevmetrics.internal.MethodsTracingManager.shouldTraceMethod(MethodsTracingManager.java:84)
                                                                                at com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer.executeWithTracingIfEnabled(ActivityLifecycleAnalyzer.java:77)
                                                                                at com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer.ajc$inlineAccessMethod$com_frogermcs_androiddevmetrics_aspect_ActivityLifecycleAnalyzer$com_frogermcs_androiddevmetrics_aspect_ActivityLifecycleAnalyzer$executeWithTracingIfEnabled(ActivityLifecycleAnalyzer.java:1)
                                                                                at com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer.logAndExecute(ActivityLifecycleAnalyzer.java:66)
                                                                                at com.nicopasso.android.ui.start.StartingActivity.onCreate(StartingActivity.java:43)
                                                                                at android.app.Activity.performCreate(Activity.java:6251)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476at android.app.ActivityThread.-wrap11(ActivityThread.javaat android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344at android.os.Handler.dispatchMessage(Handler.java:102at android.os.Looper.loop(Looper.java:148at android.app.ActivityThread.main(ActivityThread.java:5417at java.lang.reflect.Method.invoke(Native Methodat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616

I've already tried to implement

MethodsTracingManager.getInstance().init(this);

in my StartingActivity as the stack trace says but still I have the same issue.

How can I solve this problem?
Thanks

Metrics for lifecycle methods are showing as 0ms for Library projects

Metrics are only showing for the activities in the App module, if we launch activities from a library component then metrics are showing as 0ms

Reproduction:

  1. Create a sample Android application
  2. Create sample library project with few activities(make proper dependency to the above sample app.).
  3. Navigate to the activity in the sample library project from App module.
  4. Check the metrics, 0ms is showing for the activities(of sample library).

Crashes when `enableActivityMetrics` is false

AndroidDevMetrics crashes when running with the following configuration:

AndroidDevMetrics.Builder builder = new AndroidDevMetrics.Builder(this)
            .enableActivityMetrics(false)
            .enableDagger2Metrics(true)
            .showNotification(false);
AndroidDevMetrics.initWith(builder);`

The stack trace is as follow:

Caused by: java.lang.RuntimeException: MethodsTracingManager must be initialized by init(..)
at com.frogermcs.androiddevmetrics.internal.MethodsTracingManager.checkInitialized(MethodsTracingManager.java:90)
at com.frogermcs.androiddevmetrics.internal.MethodsTracingManager.shouldTraceMethod(MethodsTracingManager.java:84)
at com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer.executeWithTracingIfEnabled(ActivityLifecycleAnalyzer.java:77)
at com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer.ajc$inlineAccessMethod$com_frogermcs_androiddevmetrics_aspect_ActivityLifecycleAnalyzer$com_frogermcs_androiddevmetrics_aspect_ActivityLifecycleAnalyzer$executeWithTracingIfEnabled(ActivityLifecycleAnalyzer.java:1)
at com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer.logAndExecute(ActivityLifecycleAnalyzer.java:66)

gradle assembleRelease fails.

assembleDebug is working fine when dagger2metrics is added but assembleRelease fails with the following error. Is there a way we can keep the code and make sure release build works fine.

error: package com.frogermcs.dagger2metrics does not exist
import com.frogermcs.dagger2metrics.Dagger2Metrics;
^
1 error
:app:compileReleaseJavaWithJavac FAILED

how to init version0.5

if I use the classpath 'com.frogermcs.androiddevmetrics:androiddevmetrics-plugin:0.5'

how should i init it?

Doesn't work on API 26

AndroidDevMetrics doesn't show popup window on API 26. It's all right when I revert to 25 API version.
My gradle file is

compileSdkVersion 25
buildToolsVersion "25.0.0"
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 25
...

With this config all right.

compileSdkVersion 26
buildToolsVersion "26.0.1"
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 26
...

With this configuration, notification popup doesn't show.

Compile error when compileSdkVersion < 23

Current version will cause compile error when compileSdkVersion is lower than 23

Below is the error message
/Users/Fate/xxx/app/build/intermediates/res/merged/sysarc/values-v23/values-v23.xml
Error:(3) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(24) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

Cannot resolve symbol AndroidDevMetrics

Even though I'm able to sync dependencies without errors, android studio still can't find the AndroidDevMetrics.class
I tried a clean build and even invalidated my cache and restarted AS, no luck. Here's how I set up AndroidDevMetrics:

build.gradle (module)

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'realm-android'
apply plugin: 'com.frogermcs.androiddevmetrics'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"

    defaultConfig {

build.gradle (project)

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        classpath "io.realm:realm-gradle-plugin:1.2.0"
        classpath 'com.google.gms:google-services:3.0.0'
        classpath 'com.frogermcs.androiddevmetrics:androiddevmetrics-plugin:0.4'

Any clue what might be going on?

NullPointerException

Crashed with NullPointerException:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at com.frogermcs.dagger2metrics.aspect.GraphAnalyzer.logAndExecute(GraphAnalyzer.java:53)

when logging dependency provided with @provides @nullable annotations

Not forced to apply the plugin

Hi,

It could be interesting to say that the plugin is mostly here to apply aspects. Can we add to the readme that if user is already using an aspectj plugin, he only has to add to its dependencies :

releaseCompile 'com.frogermcs.androiddevmetrics:androiddevmetrics-runtime-noop:0.4'
debugCompile 'com.frogermcs.androiddevmetrics:androiddevmetrics-runtime:0.4'

However the aspectj task from the plugin could conflict with other aspectj task.
What do you think ?

when i run on non marshmallow it always crashes.

When i subclass Application and do this configuration in gradle :

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.example.uen229.mydagger2application"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.google.dagger:dagger:2.0'
    apt 'com.google.dagger:dagger-compiler:2.0'
    provided 'org.glassfish:javax.annotation:10.0-b28'
}

dagger2metrics make the app crash with :

FATAL EXCEPTION: main
java.lang.VerifyError: com/example/uen229/mydagger2application/butters/ButterModule$AjcClosure1
at com.example.uen229.mydagger2application.butters.ButterModule.ProvideCashewButter(ButterModule.java:23)
at com.example.uen229.mydagger2application.butters.ButterModule_ProvideCashewButterFactory.get(ButterModule_ProvideCashewButterFactory.java:17)
at com.example.uen229.mydagger2application.butters.ButterModule_ProvideCashewButterFactory.get(ButterModule_ProvideCashewButterFactory.java:6)
at com.example.uen229.mydagger2application.component.DaggerButterComponent.ProvideCashewButter(DaggerButterComponent.java:32)
at com.example.uen229.mydagger2application.component.DaggerSandwichComponent$1.get(DaggerSandwichComponent.java:37)
at com.example.uen229.mydagger2application.component.DaggerSandwichComponent$1.get(DaggerSandwichComponent.java:35)
at com.example.uen229.mydagger2application.Sandwitches.SandwichModule_ProvidesCashewSandwitchFactory.get(SandwichModule_ProvidesCashewSandwitchFactory.java:22)
at com.example.uen229.mydagger2application.Sandwitches.SandwichModule_ProvidesCashewSandwitchFactory.get(SandwichModule_ProvidesCashewSandwitchFactory.java:8)
at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
at com.example.uen229.mydagger2application.MainActivity_MembersInjector.injectMembers(MainActivity_MembersInjector.java:31)
at com.example.uen229.mydagger2application.MainActivity_MembersInjector.injectMembers(MainActivity_MembersInjector.java:10)
at com.example.uen229.mydagger2application.component.DaggerSandwichComponent.inject(DaggerSandwichComponent.java:56)
at com.example.uen229.mydagger2application.MainActivity.onCreate(MainActivity.java:52)
at android.app.Activity.performCreate(Activity.java:5008)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)

My trivial project is here: https://github.com/j2emanue/dagger2_scope_demo.git

if you just download it and run as is it works, but when i add dagger2metrics it fails.

Verify error after updating distribution url https\://services.gradle.org/distributions/gradle-4.4-all.zip in multi-module project.

java.lang.VerifyError: Verifier rejected class com.frogermcs.androiddevmetrics.aspect.Dagger2GraphAnalyzer: boolean com.frogermcs.androiddevmetrics.aspect.Dagger2GraphAnalyzer.ajc$inlineAccessMethod$com_frogermcs_androiddevmetrics_aspect_Dagger2GraphAnalyzer$com_frogermcs_androiddevmetrics_aspect_Dagger2GraphAnalyzer$isMethodWithReturnType(com.frogermcs.androiddevmetrics.aspect.Dagger2GraphAnalyzer, org.aspectj.lang.reflect.CodeSignature) failed to verify: boolean com.frogermcs.androiddevmetrics.aspect.Dagger2GraphAnalyzer.ajc$inlineAccessMethod$com_frogermcs_androiddevmetrics_aspect_Dagger2GraphAnalyzer$com_frogermcs_androiddevmetrics_aspect_Dagger2GraphAnalyzer$isMethodWithReturnType(com.frogermcs.androiddevmetrics.aspect.Dagger2GraphAnalyzer, org.aspectj.lang.reflect.CodeSignature): [0x0] invoke-super/virtual can't be used on private method boolean com.frogermcs.androiddevmetrics.aspect.Dagger2GraphAnalyzer.isMethodWithReturnType(org.aspectj.lang.reflect.CodeSignature) (declaration of 'com.frogermcs.androiddevmetrics.aspect.Dagger2GraphAnalyzer' appears in /data/app/com.aranoah.healthkart.plus.staging.debug-1/base.apk:classes31.dex)
at com.frogermcs.androiddevmetrics.aspect.Dagger2GraphAnalyzer.setEnabled(Dagger2GraphAnalyzer.java:20)
at com.frogermcs.androiddevmetrics.AndroidDevMetrics.setupMetrics(AndroidDevMetrics.java:97)
at com.frogermcs.androiddevmetrics.AndroidDevMetrics.setAndroidDevMetrics(AndroidDevMetrics.java:69)
at com.frogermcs.androiddevmetrics.AndroidDevMetrics.initWith(AndroidDevMetrics.java:59)
at com.frogermcs.androiddevmetrics.AndroidDevMetrics.initWith(AndroidDevMetrics.java:52)
at com.frogermcs.androiddevmetrics.AndroidDevMetrics.initWith(AndroidDevMetrics.java:48)
at com.aranoah.healthkart.plus.BaseApplication.initDevMetrics(BaseApplication.java:66)
at com.aranoah.healthkart.plus.BaseApplication.onCreate(BaseApplication.java:59)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1032)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5970)
at android.app.ActivityThread.-wrap3(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1710)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)

NoClassDefFoundError

After integrating ADM, my app crashed with the exception below, even after a clean build.

Probably unrelated, but the part of my app where the exception occurred was on a databinding variable.

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/internal/widget/TintManager;
    at android.support.design.widget.TabLayout$TabView.<init>(TabLayout.java:1179)
    at android.support.design.widget.TabLayout.createTabView(TabLayout.java:655)
    at android.support.design.widget.TabLayout.addTabView(TabLayout.java:690)
    at android.support.design.widget.TabLayout.addTab(TabLayout.java:385)
    at android.support.design.widget.TabLayout.addTab(TabLayout.java:360)
    at android.support.design.widget.TabLayout.setTabsFromPagerAdapter(TabLayout.java:644)
    at android.support.design.widget.TabLayout.setupWithViewPager(TabLayout.java:615)
    at <..>.MyFragment.onCreateView(MyFragment.java:31)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.internal.widget.TintManager" on path: DexPathList[[zip file "/data/app/<...>.debug-1/base.apk"],nativeLibraryDirectories=[/data/app/<...>.debug-1/lib/x86, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    ... 23 more
Suppressed: java.lang.ClassNotFoundException: android.support.v7.internal.widget.TintManager
    at java.lang.Class.classForName(Native Method)
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
    ... 24 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Import doesn't work with beta build type

I have beta build type defined in build.gradle file with the same settings as debug build type. When I want to build this beta build (./gradlew assembleBeta) I get the error message with missing import com.frogermcs.androiddevmetrics.AndroidDevMetrics. Debug and release build types work properly.

Update Android dependencies

There were no major updates to this library for quite some time, so I would like to propose to update its Android dependencies to the newest version - build tools (27.0.3) and support libraries (27.0.2). It would be a good first step towards supporting Android API 26+ (#38). The first tiny step has been already taken in #41

Convert `AndroidDevMetricsPlugin` Groovy to Java/Kotlin

AndroidDevMetrics plugin is mainly used by Android/Java developer. I would like to convert existing Groovy to language known by plugin's users and potential developers.

I think it isn't about understanding what e.g AndroidDevMetricsPlugin.groovy does, but to make it easier to modify existing code.

@frogermcs what do you think?

Usage with custom buildTypes

When using custom build types, I have to manually add the build dependencies. I use something like following:

buildTypes {
    debug {
        ...
    }
    release {
        ...
    }
    debug_pro {
        ...
    }
    release_pro {
        ...
    }
}

I'm not sure which one I have to add of following:

 debugCompile 'com.frogermcs.androiddevmetrics:androiddevmetrics-plugin:0.4'
 debugCompile 'com.frogermcs.androiddevmetrics:androiddevmetrics-runtime:0.4'
 debug_proCompile 'com.frogermcs.androiddevmetrics:androiddevmetrics-plugin:0.4'
 debug_proCompile 'com.frogermcs.androiddevmetrics:androiddevmetrics-runtime:0.4'

Do I have to add plugin and runtime or runtime only?

Additionally, it would not be bad to add the information to the readme for all people that do use custom build types...

Visual issues

As you can see something is wrong with styles. Also I'm not sure but measuring doesn't seem to work good either.

Tested on Android 4.4.2 and 5.0.1. Result is the same on both devices.

screenshot_2016-02-01-13-00-07

Duplicate zip entry aspectjrt

I getting Duplicate zip entry [aspectjrt-1.8.8.jar:org/aspectj/lang/reflect/NoSuchAdviceException.class] when i am trying to integrate.
I am using aspectjrt in other class path too and their is no transitive = true in dependencies classpath, how it can be configure?

Proguard rules

Are there any proguard rules. I don't seem to be able to build it successfully with minification enabled.

This is the error that i'm getting during the gradle build process
error: package com.frogermcs.androiddevmetrics does not exist

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.