1

I use RxPermission library to handle runtime permissions easily,

In my app I ask for location:

 rxPermissions
                .request(Manifest.permission.ACCESS_FINE_LOCATION)
                .subscribe(granted -> {
                    if (granted) {
                        boolean gpsEnabled, networkEnabled;

                        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                        if (locationManager != null) {
                            gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
                            networkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

                            if (gpsEnabled && locationListenerGPS != null) {

                                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0L, 0f, locationListenerGPS);
                            }

                            if (networkEnabled && locationListenerNetwork != null) {
                                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0L, 0f, locationListenerNetwork);
                            }

                        }


                    } else {
                        Log.d("Access not granted", "no location");
                    }
                });

When I open the debug-apk It works perfect but when I try to open release apk it crashes with this error:

FATAL EXCEPTION: main Process: com.magis.icbc, PID: 19522 java.lang.InternalError at d.c.d.b.s.a(UnsafeAccess.java:115) at d.c.d.b.r.(SpscArrayQueue.java:42) at d.c.a.d$c.(OnSubscribeConcatMap.java:129) at d.c.a.d.a(OnSubscribeConcatMap.java:82) at d.c.a.d.a(OnSubscribeConcatMap.java:42) at d.d.a(Observable.java:10142) at d.c.a.k$e.a(OperatorMerge.java:248) at d.c.a.k$e.b(OperatorMerge.java:148) at d.c.a.h$a.b(OnSubscribeMap.java:77) at d.c.a.k$e.a(OperatorMerge.java:511) at d.c.a.k$e.a(OperatorMerge.java:466) at d.c.a.k$e.a(OperatorMerge.java:244) at d.c.a.k$e.b(OperatorMerge.java:148) at d.c.a.e$a.a(OnSubscribeFromArray.java:76) at d.c.a.e$a.a(OnSubscribeFromArray.java:58) at d.i.a(Subscriber.java:211) at d.c.a.e.a(OnSubscribeFromArray.java:32) at d.c.a.e.a(OnSubscribeFromArray.java:24) at d.c.a.g.a(OnSubscribeLift.java:48) at d.c.a.g.a(OnSubscribeLift.java:30) at d.d.a(Observable.java:10142) at d.c.a.h.a(OnSubscribeMap.java:48) at d.c.a.h.a(OnSubscribeMap.java:33) at d.c.a.g.a(OnSubscribeLift.java:48) at d.c.a.g.a(OnSubscribeLift.java:30) at d.c.a.g.a(OnSubscribeLift.java:48) at d.c.a.g.a(OnSubscribeLift.java:30) at d.d.a(Observable.java:10142) at d.c.a.h.a(OnSubscribeMap.java:48) at d.c.a.h.a(OnSubscribeMap.java:33) at d.c.a.g.a(OnSubscribeLift.java:48) at d.c.a.g.a(OnSubscribeLift.java:30) at d.d.a(Observable.java:10238) at d.d.b(Observable.java:10205) at d.d.a(Observable.java:10010) at com.magis.icbc.ui.activities.SplashActivity.n(SplashActivity.java:222) at com.magis.icbc.ui.activities.SplashActivity.onCreate(SplashActivity.java:173) at android.app.Activity.performCreate(Activity.java:6876) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) at android.app.ActivityThread.access$1100(ActivityThread.java:221) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7224) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) Caused by: java.lang.NoSuchFieldException: No field producerIndex in class Ld/c/d/b/r; (declaration of 'd.c.d.b.r' appears in /data/app/com.magis.icbc-1/base.apk) at java.lang.Class.getDeclaredField(Native Method) at d.c.d.b.s.a(UnsafeAccess.java:112)

eaxctly at this line .subscribe(granted -> {

Ege Kuzubasioglu
  • 5,991
  • 12
  • 49
  • 85

1 Answers1

2

Looks like you have one of those devices which rename fields and break reflection in addition to seemingly providing Unsafe access. Try disabling this old RxJava feature by setting the rx.unsafe-disable system property to true before RxJava could get initialized.

akarnokd
  • 69,132
  • 14
  • 157
  • 192