orhanobut / tracklytics

✔️ Annotation based tracking handler with aspect oriented programming
Apache License 2.0
429 stars 45 forks source link

Configuration of Proguard #35

Closed ye125440 closed 7 years ago

ye125440 commented 8 years ago

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.

orhanobut commented 8 years ago

We don't use proguard, therefore I didn't need this config so far. But next week I'll try with proguard and can provide this information

crosswall commented 8 years ago

I met this error,when i use proguard...

Fatal Exception: 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.TrackerAspect.addClassAttributes(TrackerAspect.java:156)
       at com.orhanobut.tracklytics.TrackerAspect.ajc$inlineAccessMethod$com_orhanobut_tracklytics_TrackerAspect$com_orhanobut_tracklytics_TrackerAspect$setup(TrackerAspect.java:1)
       at com.orhanobut.tracklytics.TrackerAspect.weaveJoinPointTrackEvent(TrackerAspect.java:133)
       at com.wallstreetcn.meepo.ui.subject.view.TopBuyGroupView.ItemClick(TopBuyGroupView.java:52)
       at com.wallstreetcn.meepo.ui.subject.view.TopGroupView$1.onClick(TopGroupView.java:80)
       at android.view.View.performClick(View.java:4792)
       at android.view.View$PerformClick.run(View.java:19915)
       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:5298)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:910)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:705)
ye125440 commented 8 years ago

I added -keepattributes *Annotation* in the proguard-rules.pro file, and set minifyEnabled true in the build.gradle file. Then I build the project and installed the apk, when I open the app, it was forced to close for java.lang.NullPointerException, excatly same as crosswall's.

It looks like I've keep all class and interface files belong to your library:

-keepattributes *Annotation*

-keep class com.orhanobut.tracklytics.** {*;}

-keep interface com.orhanobut.tracklytics.* {*;}

-dontwarn com.orhanobut.tracklytics.*

But it still not working.

zhizhangchen commented 7 years ago

Try this:

-keepclasseswithmembers class * { @com.orhanobut.tracklytics.TrackEvent ; }

orhanobut commented 7 years ago

This issue will be followed up with Consumer proguard issue. #40