react-native-analytics-segment-io icon indicating copy to clipboard operation
react-native-analytics-segment-io copied to clipboard

App crashes when ProGuard is enabled

Open aitorct opened this issue 6 years ago • 3 comments

I enabled ProGuard in my app and it crashes on start.

This is the crash report:

05-29 16:58:20.913  6738  6810 E AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
05-29 16:58:20.913  6738  6810 E AndroidRuntime: Process: XXX.XXX.XXX, PID: 6738
05-29 16:58:20.913  6738  6810 E AndroidRuntime: java.lang.IllegalArgumentException: writeKey must not be null or empty.
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at com.segment.analytics.Analytics$Builder.<init>(Analytics.java:1095)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at com.leo_pharma.analytics.SegmentModule.setup(SegmentModule.java:52)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:158)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:873)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:193)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:232)
05-29 16:58:20.913  6738  6810 E AndroidRuntime: 	at java.lang.Thread.run(Thread.java:764)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
05-29 17:06:13.689  8046  8132 E AndroidRuntime: Process: XXX.XXX.XXX, PID: 8046
05-29 17:06:13.689  8046  8132 E AndroidRuntime: java.lang.IllegalArgumentException: writeKey must not be null or empty.
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at com.segment.analytics.Analytics$Builder.<init>(Analytics.java:1095)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at com.leo_pharma.analytics.SegmentModule.setup(SegmentModule.java:52)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:158)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:873)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:193)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:232)
05-29 17:06:13.689  8046  8132 E AndroidRuntime: 	at java.lang.Thread.run(Thread.java:764)

I added some rules to keep the involved classes and avoid ProGuard from obfuscating them, but that did'nt do the trick:

-keep class com.leo_pharma.analytics.** {*;}
-keep class com.segment.analytics.** {*;}
-keep class com.amplitude.** { *; }

Any help is welcome! :)

aitorct avatar May 29 '19 15:05 aitorct

Did you find a solution?

mark-software avatar Jul 31 '20 16:07 mark-software

Did you find a solution?

Nope, sorry… We moved to the official Segment library anyway.

aitorct avatar Aug 01 '20 16:08 aitorct

If possible, I'd recommend to migrate to the official Segment RN library: https://github.com/segmentio/analytics-react-native. The setup is very similar and it comes with official support from Segment. This one has been deprecated since Segment came out with their own, and we will not be doing any fixes here.

kevinpelgrims avatar Aug 04 '20 17:08 kevinpelgrims