frogermcs / androiddevmetrics Goto Github PK
View Code? Open in Web Editor NEWPerformance metrics library for Android development (includes dagger2metrics)
Performance metrics library for Android development (includes dagger2metrics)
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
Could not find com.android.tools.build:gradle:3.0.1.
Searched in the following locations:
https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.pom
https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.jar
Required by:
project :app > com.frogermcs.androiddevmetrics:androiddevmetrics-plugin:0.6
Open File
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.
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.
#46 added a few tests, so maybe it would good idea to run them with every commit/pr. @frogermcs what do you think?
Since AndroidDevMetrics is only added for debug builds release builds will fail to resolve any AndroidDevMetrics classes
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)
Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html
Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support:support-v4:26.1.0.
Open File
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'
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
Hi, I find that this don't work when dagger2 written by kotlin. Is it a bug? Or my problems?
When I've checked this project source code for the first time I found it difficult to build this plugin and check its behaviour in my project. I would like to add Building AndroidDevMetrics
with a few steps of description how to start.
@frogermcs what do you think?
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?
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: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)
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 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:
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)
I have found that AndroidDevMetrics causes Roboelectric tests to hang indefinitely. The work-around I found was to disable AndroidDevMetrics during unit tests.
See discussion here: artem-zinnatullin/qualitymatters#145
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
if I use the classpath 'com.frogermcs.androiddevmetrics:androiddevmetrics-plugin:0.5'
how should i init it?
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.
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'.
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?
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
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 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.
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)
Is it possible to add metrics for fragments that are in use in application?
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
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.
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
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?
Is AndroidDevMetrics compatible with Dagger 1??
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...
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?
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.