mbiamont / google-analytics-annotations

Android library to easily use Google Analytics through annotation
Apache License 2.0
69 stars 12 forks source link

Nullpointer Exception on Android 4.4 #6

Closed andreas- closed 7 years ago

andreas- commented 8 years ago

We encountered a strange behaviour on Android 4.4.4. The code works fine on newer Android versions. You can test this also by using genymotion running a S4 4.4.4 instance.

ga-annotations-library:1.2.0 compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 17 targetSdkVersion 23 versionCode 2 versionName "0.0.1" }

Our tracking method: Within v4 support fragment @TrackScreen(name = "Disclaimer") @Override public void onResume() { super.onResume(); }

Stacktrace: E/AndroidRuntime( 2153): java.lang.RuntimeException: Unable to resume activity {io.bitfactory.arbeitszeugnis.debug/io.bitfactory.arbeitszeugnis.ui.MainActivity_}: java.lang.NullPointerException E/AndroidRuntime( 2153): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2774) E/AndroidRuntime( 2153): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2803) E/AndroidRuntime( 2153): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2238) E/AndroidRuntime( 2153): at android.app.ActivityThread.access$800(ActivityThread.java:135) E/AndroidRuntime( 2153): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) E/AndroidRuntime( 2153): at android.os.Handler.dispatchMessage(Handler.java:102) E/AndroidRuntime( 2153): at android.os.Looper.loop(Looper.java:136) E/AndroidRuntime( 2153): at android.app.ActivityThread.main(ActivityThread.java:5001) E/AndroidRuntime( 2153): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 2153): at java.lang.reflect.Method.invoke(Method.java:515) E/AndroidRuntime( 2153): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) E/AndroidRuntime( 2153): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) E/AndroidRuntime( 2153): at dalvik.system.NativeStart.main(Native Method) E/AndroidRuntime( 2153): Caused by: java.lang.NullPointerException E/AndroidRuntime( 2153): at com.mbiamont.ga_annotations.aspect.TrackScreenAspect.sendTrack(TrackScreenAspect.java:44) E/AndroidRuntime( 2153): at io.bitfactory.arbeitszeugnis.ui.InfoFragment.onResume(InfoFragment.java:51) E/AndroidRuntime( 2153): at android.support.v4.app.Fragment.performResume(Fragment.java:2020) E/AndroidRuntime( 2153): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1107) E/AndroidRuntime( 2153): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) E/AndroidRuntime( 2153): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234) E/AndroidRuntime( 2153): at android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:2056) E/AndroidRuntime( 2153): at android.support.v4.app.FragmentController.dispatchResume(FragmentController.java:196) E/AndroidRuntime( 2153): at android.support.v4.app.FragmentActivity.onResumeFragments(FragmentActivity.java:504) E/AndroidRuntime( 2153): at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:493) E/AndroidRuntime( 2153): at android.support.v7.app.AppCompatActivity.onPostResume(AppCompatActivity.java:178) E/AndroidRuntime( 2153): at android.app.Activity.performResume(Activity.java:5323) E/AndroidRuntime( 2153): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2764) E/AndroidRuntime( 2153): ... 12 more

Reason is that TrackScreen myAnnotation = ((MethodSignature) joinPoint.getSignature()).getMethod().getAnnotation(TrackScreen.class); does not find the TrackScreen annotation.

As a side note, we are also using androidannotations, but this should not be the issue here.

mbiamont commented 7 years ago

Hi, the bug should be fixed using the plugin version 1.1.1 and the library 1.2.1