orhanobut / tracklytics Goto Github PK
View Code? Open in Web Editor NEW✔️ Annotation based tracking handler with aspect oriented programming
License: Apache License 2.0
✔️ Annotation based tracking handler with aspect oriented programming
License: Apache License 2.0
Scope: Method, Parameter
Use Attribute to add attributes with dynamic values. There are 2 ways to set this value.
Both option accepts null
@Attribute("key") String someMethod(){
return "value";
}
void someMethod(@Attribute("key") String value){
}
@Attribute("key1") void someMethod(@Attribute("key2") String value1){
return "value2"
}
Attribute also has a default value option. When the expected value is null, default value will be used
@Attribute(value = "key", defaultValue="value") String someMethod(){
return null";
}
Scope: Class, Method
Use it to add fixed values for the attributes
@FixedAttribute(key="Screen Name", value="Login")
public class LoginActivity {
@FixedAttribute(key="key", value="value") public void foo(){
}
}
Scope: Class, Method
Use it to add multiple attributes at once. Java 7 or lower API's don't support repeated annotations.
@FixedAttributes({
@FixedAttribute(key="key1", value="value1"),
@FixedAttribute(key="key2", value="value2")
})
public void foo(){
}
Sometimes, you may need to have an application scope attribute and you may want to have this attribute for each event.
Attribute and FixedAttribute have an option to make the attribute super. As default it is false, thereby enabling this flag will make the attribute super and it will kept in memory in entire time.
@Attribute(key="key", isSuper=true)
//or
@FixedAttribute(key="key", value="value", isSuper=true)
To be updated...
@orhanobut first thing first, great library 💯 :)
I am pretty new to github stuff (dont believe even my profile says other wise :)) so i am writing here my suggestion which i believe will increase the user number of library.
it would be great if you can share a simple sample project which contains :
King Regards
As the title says, current project only support java projects.
Hello,
Nice library. Do you think like adopting Adobe Analytics to this library?
And if Yes , do you accept contributors?
can you help me please
Error:(15, 0) Gradle DSL method not found: 'compile()'
Possible causes:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
// ... other dependencies here
compile('com.github.afollestad.material-dialogs:core:0.8.5.1@aar') {
transitive = true
}
}
}
allprojects {
repositories {
jcenter()
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.gabriel.workoutrecipes"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile('com.mikepenz:materialdrawer:4.6.1@aar') {
transitive = true
}
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:design:24.0.0-alpha2'
compile 'com.github.rey5137:material:1.2.2'
compile 'com.afollestad:material-dialogs:0.7.9.1'
compile 'se.emilsjolander:StickyScrollViewItems:1.1.0'
compile 'com.melnykov:floatingactionbutton:1.3.0'
compile 'com.android.support:cardview-v7:24.0.0-alpha2'
compile 'com.android.support:recyclerview-v7:24.0.0-alpha2'
compile 'com.etsy.android.grid:library:1.0.5'
compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-analytics:8.4.0'
}
I have used below code to my app/gradle file
buildscript {
dependencies {
classpath 'com.orhanobut.tracklytics:tracklytics-plugin:2.0.0'
}
}
apply plugin: 'com.android.application'
apply plugin: 'com.orhanobut.tracklytics'
but .I am getting below error
Error:Could not find com.orhanobut.tracklytics:tracklytics-plugin:2.0.0.
Searched in the following locations:
file:/Applications/Android Studio.app/Contents/gradle/m2repository/com/orhanobut/tracklytics/tracklytics-plugin/2.0.0/tracklytics-plugin-2.0.0.pom
file:/Applications/Android Studio.app/Contents/gradle/m2repository/com/orhanobut/tracklytics/tracklytics-plugin/2.0.0/tracklytics-plugin-2.0.0.jar
Required by:
project :app
Hi,
Can you help me solve this ?
Error:Could not find com.orhanobut.tracklytics:tracklytics-plugin:0.10.
Searched in the following locations:
file:/Applications/Android Studio.app/Contents/gradle/m2repository/com/orhanobut/tracklytics/tracklytics-plugin/0.10/tracklytics-plugin-0.10.pom
file:/Applications/Android Studio.app/Contents/gradle/m2repository/com/orhanobut/tracklytics/tracklytics-plugin/0.10/tracklytics-plugin-0.10.jar
https://maven.fabric.io/public/com/orhanobut/tracklytics/tracklytics-plugin/0.10/tracklytics-plugin-0.10.pom
https://maven.fabric.io/public/com/orhanobut/tracklytics/tracklytics-plugin/0.10/tracklytics-plugin-0.10.jar
Required by:
Thanks!
Manju
Current long might be too long and might be not readable, especially when the developer is interested in details.
[0+0=0ms] Screen Displayed-> {Screen Name=Login, Key=very very long value}, super attrs: {User Id: 324234234}, filters: [100]
Log output should be easily readable. I don't have any clear idea right now but this issue should be a kick-off for this idea.
if I use the proguard, which part of code of tracklytics should I keep?
-keep class com.orhanobut.tracklytics.** { ; }
-keep interface com.orhanobut.tracklytics.* { ; }
-dontwarn com.orhanobut.tracklytics.*
this configuration doesn't work on my project.
The plugin doent work with kotlin files
In my project we use out source teams and i do not want to share our live API Keys with them so i create 2 different project on Google Console and generate 2 different sets of keys. To enable this with Tracklytics i did this :
task switchToDebug(type: Copy) {
description = 'Switches to DEBUG google-services.json'
from "src/debug"
include "google-services.json"
into "."
}
task switchToRelease(type: Copy) {
description = 'Switches to RELEASE google-services.json'
from "../.."
include "google-services.json"
into "."
}
task prepareTracklyticsDebug(type: Copy) {
description = 'Copies Tracklytics keys for Debug'
from "src/debug"
include "tracklytics.properties"
into "../"
}
task prepareTracklyticsRelease(type: Copy) {
description = 'Copies Tracklytics keys for Release'
from "../../AndroidKeyStore"
include "tracklytics.properties"
into "../"
}
afterEvaluate {
processDebugGoogleServices.dependsOn switchToDebug
processReleaseGoogleServices.dependsOn switchToRelease
if (build.properties.debuggable) {
prepareComOrhanobutTracklyticsTracklyticsRuntime013Library.dependsOn prepareTracklyticsDebug
} else {
prepareComOrhanobutTracklyticsTracklyticsRuntime013Library.dependsOn prepareTracklyticsRelease
}
}
Result :
I used build.properties.debuggable and set it false for release buildType and true for debug buildType because i could not see different tasks for release and debug in build log. It may be good if there are seperate tasks as " processDebugGoogleServices & processReleaseGoogleServices " in addition to / instead of prepareComOrhanobutTracklyticsTracklyticsRuntime013Library . Or they exists and i could not see :(
I am not a master so i am very open to change the way i did it if this is not the way to do these kind of stuff.
My method:
@TrackEvent("SELECT_CONTENT")
private fun selectItem(@TrackableAttribute item: MyItem) {
...
}
Error:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.reflect.Method.getDeclaringClass()' on a null object reference
at com.orhanobut.tracklytics.TracklyticsAspect.addClassAttributes(SourceFile:119)
at com.orhanobut.tracklytics.TracklyticsAspect.weaveJoinPointTrackEvent(SourceFile:104)
I've followed the sample code, and downloaded it too, but onEventTracked
is never called.
The way I found it to work is to use tracklytics.trackEvent (String eventName, Map Attributes)
, but did not want to do it that way.
Doesn't work with classpath com.android.tools.build:gradle:3.3.0
the error occurs during Sync of project
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:79)
at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:73)
at org.gradle.configuration.project.LifecycleProjectEvaluator.access$400(LifecycleProjectEvaluator.java:54)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:200)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:110)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:68)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:687)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:140)
at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:62)
at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:41)
at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:274)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:182)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:141)
at org.gradle.initialization.DefaultGradleLauncher.getConfiguredBuild(DefaultGradleLauncher.java:119)
at org.gradle.internal.invocation.GradleBuildController$2.call(GradleBuildController.java:86)
at org.gradle.internal.invocation.GradleBuildController$2.call(GradleBuildController.java:83)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:154)
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:38)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
at org.gradle.internal.invocation.GradleBuildController.configure(GradleBuildController.java:83)
at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.run(ClientProvidedBuildActionRunner.java:70)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:50)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:44)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:79)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:44)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.gradle.internal.event.ListenerNotificationException: Failed to notify project evaluation listener.
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:86)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy30.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:187)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:184)
at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1418)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:193)
... 95 more
Caused by: org.gradle.api.InvalidUserCodeException: Cannot create variant 'android-manifest-metadata' after configuration ':app:qaApiElements' has been resolved
at org.gradle.api.internal.artifacts.configurations.DefaultConfigurationPublications$ConfigurationVariantFactory.create(DefaultConfigurationPublications.java:194)
at org.gradle.api.internal.artifacts.configurations.DefaultConfigurationPublications$ConfigurationVariantFactory.create(DefaultConfigurationPublications.java:188)
at org.gradle.api.internal.FactoryNamedDomainObjectContainer.doCreate(FactoryNamedDomainObjectContainer.java:100)
at org.gradle.api.internal.AbstractNamedDomainObjectContainer.create(AbstractNamedDomainObjectContainer.java:72)
at com.android.build.gradle.internal.scope.ArtifactPublishingUtil$publishArtifactToConfiguration$1.execute(ArtifactPublishingUtil.kt:47)
at com.android.build.gradle.internal.scope.ArtifactPublishingUtil$publishArtifactToConfiguration$1.execute(ArtifactPublishingUtil.kt)
at org.gradle.api.internal.artifacts.configurations.DefaultConfigurationPublications.variants(DefaultConfigurationPublications.java:158)
at com.android.build.gradle.internal.scope.ArtifactPublishingUtil.publishArtifactToConfiguration(ArtifactPublishingUtil.kt:46)
at com.android.build.gradle.internal.scope.ArtifactPublishingUtil.publishArtifactToConfiguration$default(ArtifactPublishingUtil.kt:41)
at com.android.build.gradle.internal.scope.ArtifactPublishingUtil.publishArtifactToConfiguration(ArtifactPublishingUtil.kt)
at com.android.build.gradle.internal.scope.VariantScopeImpl.publishIntermediateArtifact(VariantScopeImpl.java:233)
at com.android.build.gradle.internal.VariantManager.publishBuildArtifacts(VariantManager.java:516)
at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:809)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)
at com.android.build.gradle.BasePlugin.lambda$createTasks$4(BasePlugin.java:651)
at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt:37)
at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1$1.run(DefaultListenerBuildOperationDecorator.java:155)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:58)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:152)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:149)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:91)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
... 105 more
Hi,
Again another great idea and library 👍
What should be written to :
new GoogleAnalyticsTrackingAdapter(this, "CONTAINER_ID", R.raw.container);
King regards
hi,
Firstly it is a really cool library. Congrats on that.
But your sample app crashes when minifyEnabled option to true. I believe proguard is causing this exception. I have added this library in my app , same exception occurs when minifyenabled to true. So please give proguard flags to avoid this exception.
i should set minifyEnabled to true to reduce the apk size.
Sometimes you may need to determine the elapsed time for a specific event. For example: Screen load time between onResume and onCreate
Add a track timer annotation to start point with a key. Key will be used to differentiate different timer points. Thus multiple timer start point can be used. And used a specific annotation to add the attribute which gets the attribute key and the timer to determine elapsed time.
@TrackTimer("timer_id")
public void onCreate() {}
@TrackEvent("Event name")
@TrackAttribute(key="attribute", timer="timer_id")
public void onResume(){}
onResume will have an attribute which is called "attribute" and the value will be elapsed time between onCreate and onTime.
Error:(3, 0) Could not get unknown property 'applicationVariants' for object of type com.android.build.gradle.LibraryExtension.
Open File
Will this library work if used with Jack compiler?
I did a quick test and it didn't work, is there any plans to make this compatible with Jack?
Error:Could not find com.orhanobut.tracklytics:tracklytics-runtime:1.1.23-SNAPSHOT.
Required by:
MYPROJECT:app:unspecified
<a href="searchInBuildFiles">Search in build.gradle files</a>
I get this error upon building my project with this library included....
No error with compilation but this does not work with Kotlin.
First things first thanks for the library 👍
My problem is, i don't want to refactor my method just to add Attribute
s and will not be used in the method itself.
Maybe in my use case i just want to use the annotation for the fixed attribute event.
Is it possible to track event from the Tracker
? Thanks before
Lovely library but an issue that I and I assume a growing number of developers are using
another open source (and personally I think a great library) ACRA. Do you have any plans to integrate with it or extend it?
My hope is to force providers to utilize a single open source library as the interface to tracking/analytics for them all instead of polluting our code as you said.
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.