Apparence-io / CamerAwesome

📸 Embedding a camera experience within your own app shouldn't be that hard. A flutter plugin to integrate awesome Android / iOS camera experience.
https://ApparenceKit.dev
MIT License
952 stars 241 forks source link

Android app carshes on first run #76

Closed ak-cloud closed 2 years ago

ak-cloud commented 3 years ago

Steps to Reproduce

Install a app for first time with this dependency and you get the error Describe how to reproduce the error Uninstall all versions of your app from the app and reinstall. Error appears at launch and app crashes

Expected results

App to load What it should be

Actual results

App crashes What you see Below error: E/AndroidRuntime( 7923): java.lang.RuntimeException: Unable to destroy activity {mypackage.myapp/mypackage.myapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.apparence.camerawesome.CameraPreview.setMainHandler(android.os.Handler)' on a null object reference E/AndroidRuntime( 7923): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5105) E/AndroidRuntime( 7923): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5135) E/AndroidRuntime( 7923): at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5427) E/AndroidRuntime( 7923): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5357) E/AndroidRuntime( 7923): at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69) E/AndroidRuntime( 7923): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) E/AndroidRuntime( 7923): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) E/AndroidRuntime( 7923): at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:58) E/AndroidRuntime( 7923): at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:5410) E/AndroidRuntime( 7923): at android.app.ActivityThread.access$3300(ActivityThread.java:237) E/AndroidRuntime( 7923): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2076) E/AndroidRuntime( 7923): at android.os.Handler.dispatchMessage(Handler.java:106) E/AndroidRuntime( 7923): at android.os.Looper.loop(Looper.java:223) E/AndroidRuntime( 7923): at android.app.ActivityThread.main(ActivityThread.java:7660) E/AndroidRuntime( 7923): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime( 7923): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) E/AndroidRuntime( 7923): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) E/AndroidRuntime( 7923): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.apparence.camerawesome.CameraPreview.setMainHandler(android.os.Handler)' on a null object reference E/AndroidRuntime( 7923): at com.apparence.camerawesome.CamerawesomePlugin.onDetachedFromActivityForConfigChanges(CamerawesomePlugin.java:521) E/AndroidRuntime( 7923): at io.flutter.embedding.engine.FlutterEnginePluginRegistry.detachFromActivityForConfigChanges(FlutterEnginePluginRegistry.java:328) E/AndroidRuntime( 7923): at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onDetach(FlutterActivityAndFragmentDelegate.java:510) E/AndroidRuntime( 7923): at io.flutter.embedding.android.FlutterActivity.onDestroy(FlutterActivity.java:577) E/AndroidRuntime( 7923): at android.app.Activity.performDestroy(Activity.java:8245) E/AndroidRuntime( 7923): at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1344) E/AndroidRuntime( 7923): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5090) E/AndroidRuntime( 7923): ... 16 more

About your device

Android - Pixel 4a, And various emulators. Every Android I have tested has same result Brand Model OS
Apple iPhone X 13.6.1

g-apparence commented 3 years ago

Hi, seems like a pretty easy scenario to reproduce. Thank you for reporting it, will try it and fix it!

ak-cloud commented 3 years ago

Stack overflow reference if you find the issue and solution https://stackoverflow.com/questions/65966286/flutter-android-app-crashes-on-all-devices

g-apparence commented 3 years ago

Seems like a good log, this will help. Will try to fix this after lunch.

gautamenbake commented 3 years ago

pls solve this

g-apparence commented 3 years ago

I'm on it ;)

g-apparence commented 3 years ago

I think you got a first crash log. I'm not pretty sure It's coming from camerAwesome or a conflict with two libs. For now I can't reproduce it. Uninstalled the example and installed never crashed on Android 9/10.

Could you give me :

Also:

liquidiert commented 3 years ago

Hey I have a related problem when using Permission Handler before using the camera the first time. Here's my error log:

D/com.apparence.camerawesome.CamerawesomePlugin(11746): _handleCheckPermissions:
E/flutter (11746): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: Null check operator used on a null value
E/flutter (11746): #0      CameraAwesomeState.initPlatformState.<anonymous closure>
package:camerawesome/camerapreview.dart:188
E/flutter (11746): #1      _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (11746): #2      _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (11746): #3      _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (11746): #4      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
E/flutter (11746): #5      _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
E/flutter (11746): #6      _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:63:11)
E/flutter (11746): #7      _EventSinkWrapper.add (dart:async/stream_transformers.dart:13:11)
E/flutter (11746): #8      CamerawesomePlugin.listenPermissionResult.<anonymous closure>
package:camerawesome/camerawesome_plugin.dart:125
E/flutter (11746): #9      _HandlerEventSink.add (dart:async/stream_transformers.dart:209:17)
E/flutter (11746): #10     _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:111:24)
E/flutter (11746): #11     _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (11746): #12     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (11746): #13     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (11746): #14     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
E/flutter (11746): #15     _DelayedData.perform (dart:async/stream_impl.dart:591:14)
E/flutter (11746): #16     _StreamImplEvents.handleNext (dart:async/stream_impl.dart:706:11)
E/flutter (11746): #17     _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:663:7)
E/flutter (11746): #18     _rootRun (dart:async/zone.dart:1346:47)
E/flutter (11746): #19     _CustomZone.run (dart:async/zone.dart:1258:19)
E/flutter (11746): #20     _CustomZone.runGuarded (dart:async/zone.dart:1162:7)
E/flutter (11746): #21     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1202:23)
E/flutter (11746): #22     _rootRun (dart:async/zone.dart:1354:13)
E/flutter (11746): #23     _CustomZone.run (dart:async/zone.dart:1258:19)
E/flutter (11746): #24     _CustomZone.runGuarded (dart:async/zone.dart:1162:7)
E/flutter (11746): #25     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1202:23)
E/flutter (11746): #26     _microtaskLoop (dart:async/schedule_microtask.dart:40:21)
E/flutter (11746): #27     _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
liquidiert commented 3 years ago

Ah think I found it! Line 188 of camera preview uses ! operator. I think ? would be a better choice in this case, cause otherwise one always has to implement a dummy onPermissionsResult.

g-apparence commented 3 years ago

Yes you are right, that's a null safety migration mistake!

g-apparence commented 3 years ago

You can create a pull request, we'll validate it right away

liquidiert commented 3 years ago

Awesome I created one!

g-apparence commented 2 years ago

Fixed this on 0.3.3