[英]flutter image_cropper crash
I tried crop image with this plugin and worked great on iOS but on Android, app will crash.我尝试使用此插件裁剪图像并在 iOS 上运行良好,但在 Android 上,应用程序会崩溃。 Console says like those.控制台说像那些。
V/BoostFramework(22266): mAcquireFunc method = public int com.qualcomm.qti.Performance.perfLockAcquire(int,int[]) V/BoostFramework(22266): mReleaseFunc method = public int com.qualcomm.qti.Performance.perfLockRelease() V/BoostFramework(22266): mAcquireTouchFunc method = public int com.qualcomm.qti.Performance.perfLockAcquireTouch(android.view.MotionEvent,android.util.DisplayMetrics,int,int[]) V/BoostFramework(22266): mIOPStart method = public int com.qualcomm.qti.Performance.perfIOPrefetchStart(int,java.lang.String) V/BoostFramework(22266): mIOPStop method = public int com.qualcomm.qti.Performance.perfIOPrefetchStop() V/BoostFramework(22266): BoostFramework(): mPerf = com.qualcomm.qti.Performance@544293f W/art (22266): Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly V/BoostFramework(22266): mAcquireFunc 方法 = public int com.qualcomm.qti.Performance.perfLockAcquire(int,int[]) V/BoostFramework(22266): mReleaseFunc 方法 = public int com.qualcomm.qti.Performance.perfLockRelease( ) V/BoostFramework(22266): mAcquireTouchFunc 方法 = public int com.qualcomm.qti.Performance.perfLockAcquireTouch(android.view.MotionEvent,android.util.DisplayMetrics,int,int[]) V/BoostFramework(22266): mIOPStart 方法= public int com.qualcomm.qti.Performance.perfIOPrefetchStart(int,java.lang.String) V/BoostFramework(22266): mIOPStop 方法 = public int com.qualcomm.qti.Performance.perfIOPrefetchStop() V/BoostFramework(22266) : BoostFramework(): mPerf = com.qualcomm.qti.Performance@544293f W/art (22266): 在 Android 4.1 之前,方法 android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter , android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) 会有错误overridden the package-private method in android.graphics.drawable.Drawable D/BitmapLoadUtils(22266): maxBitmapSize: 2078 D/BitmapWorkerTask(22266): Uri scheme: file E/TransformImageView(22266): onFailure: setImageUri E/TransformImageView(22266): java.io.FileNotFoundException: Permission denied E/TransformImageView(22266): at android.os.Parcel.openFileDescriptor(Native Method) E/TransformImageView(22266): at android.os.ParcelFileDescriptor.openInternal(ParcelFileDescriptor.java:283) E/TransformImageView(22266): at android.os.ParcelFileDescriptor.open(ParcelFileDescriptor.java:200) E/TransformImageView(22266): at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:981) E/TransformImageView(22266): at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:839) E/TransformImageView(22266): at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:793) E/TransformImageView(22266): at com.yalantis.ucrop.task.BitmapLoadTask.doInBackg重写了 android.graphics.drawable.Drawable D/BitmapLoadUtils(22266): maxBitmapSize: 2078 D/BitmapWorkerTask(22266): Uri scheme: file E/TransformImageView(22266): onFailure: setImageUri E/TransformImageView(22266) 中的包私有方法):java.io.FileNotFoundException:权限被拒绝 E/TransformImageView(22266):在 android.os.Parcel.openFileDescriptor(本机方法) E/TransformImageView(22266):在 android.os.ParcelFileDescriptor.openInternal(ParcelFileDescriptor.java:283 ) E/TransformImageView(22266): 在 android.os.ParcelFileDescriptor.open(ParcelFileDescriptor.java:200) E/TransformImageView(22266): 在 android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:981) E/TransformImageView(22266) ): 在 android.content.ContentResolver.openFileDescriptor(ContentResolver.java:839) E/TransformImageView(22266): 在 android.content.ContentResolver.openFileDescriptor(ContentResolver.java:793) E/TransformImageView(22266): 在 com.yalantis .ucrop.task.BitmapLoadTask.doInBackg round(BitmapLoadTask.java:100) E/TransformImageView(22266): at com.yalantis.ucrop.task.BitmapLoadTask.doInBackground(BitmapLoadTask.java:44) E/TransformImageView(22266): at android.os.AsyncTask$2.call(AsyncTask.java:305) E/TransformImageView(22266): at java.util.concurrent.FutureTask.run(FutureTask.java:237) E/TransformImageView(22266): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) E/TransformImageView(22266): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) E/TransformImageView(22266): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) E/TransformImageView(22266): at java.lang.Thread.run(Thread.java:761) E/AndroidRuntime(22266): FATAL EXCEPTION: main E/AndroidRuntime(22266): Process: com.example.droidemo, PID: 22266 E/AndroidRuntime(22266): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=69, result=96, data=Intent { (has extras) }} to activity {com.example.droidemo/c圆形(BitmapLoadTask.java:100)E/TransformImageView(22266):在 com.yalantis.ucrop.task.BitmapLoadTask.doInBackground(BitmapLoadTask.java:44)E/TransformImageView(22266):在 android.os.AsyncTask$2.call (AsyncTask.java:305) E/TransformImageView(22266): 在 java.util.concurrent.FutureTask.run(FutureTask.java:237) E/TransformImageView(22266): 在 android.os.AsyncTask$SerialExecutor$1.run( AsyncTask.java:243) E/TransformImageView(22266): 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) E/TransformImageView(22266): 在 java.util.concurrent.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:607) E/TransformImageView(22266): at java.lang.Thread.run(Thread.java:761) E/AndroidRuntime(22266): FATAL EXCEPTION: main E/AndroidRuntime(22266): Process: com. example.droidemo, PID: 22266 E/AndroidRuntime(22266): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=69, result=96, data=Intent { (has extras) }} 到活动 { com.example.droidemo/c om.example.droidemo.MainActivity}: java.lang.IllegalArgumentException: Unsupported value: java.io.FileNotFoundException: Permission denied E/AndroidRuntime(22266): at android.app.ActivityThread.deliverResults(ActivityThread.java:4211) E/AndroidRuntime(22266): at android.app.ActivityThread.handleSendResult(ActivityThread.java:4254) E/AndroidRuntime(22266): at android.app.ActivityThread.-wrap20(ActivityThread.java) E/AndroidRuntime(22266): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584) E/AndroidRuntime(22266): at android.os.Handler.dispatchMessage(Handler.java:102) E/AndroidRuntime(22266): at android.os.Looper.loop(Looper.java:154) E/AndroidRuntime(22266): at android.app.ActivityThread.main(ActivityThread.java:6242) E/AndroidRuntime(22266): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(22266): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) E/AndroidRuntime(22266): at com.android.internal.os.ZygoteInit.main( om.example.droidemo.MainActivity}: java.lang.IllegalArgumentException: 不受支持的值: java.io.FileNotFoundException: 权限被拒绝 E/AndroidRuntime(22266): at android.app.ActivityThread.deliverResults(ActivityThread.java:4211) E/ AndroidRuntime(22266):在 android.app.ActivityThread.handleSendResult(ActivityThread.java:4254) E/AndroidRuntime(22266):在 android.app.ActivityThread.-wrap20(ActivityThread.java) E/AndroidRuntime(22266):在 android .app.ActivityThread$H.handleMessage(ActivityThread.java:1584) E/AndroidRuntime(22266): 在 android.os.Handler.dispatchMessage(Handler.java:102) E/AndroidRuntime(22266): 在 android.os.Looper .loop(Looper.java:154) E/AndroidRuntime(22266): 在 android.app.ActivityThread.main(ActivityThread.java:6242) E/AndroidRuntime(22266): 在 java.lang.reflect.Method.invoke(Native)方法) E/AndroidRuntime(22266): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) E/AndroidRuntime(22266): 在 com.android.internal.os.ZygoteInit.main( ZygoteInit.java:779) E/AndroidRuntime(22266): Caused by: java.lang.IllegalArgumentException: Unsupported value: java.io.FileNotFoundException: Permission denied E/AndroidRuntime(22266): at io.flutter.plugin.common.StandardMessageCodec.writeValue(StandardMessageCodec.java:293) E/AndroidRuntime(22266): at io.flutter.plugin.common.StandardMethodCodec.encodeErrorEnvelope(StandardMethodCodec.java:70) E/AndroidRuntime(22266): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.error(MethodChannel.java:208) E/AndroidRuntime(22266): at vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.finishWithError(ImageCropperDelegate.java:99) E/AndroidRuntime(22266): at vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.onActivityResult(ImageCropperDelegate.java:82) E/AndroidRuntime(22266): at io.flutter.app.FlutterPluginRegistry.onActivityResult(FlutterPluginRegistry.java:210) E/AndroidRuntime(22266): at io.flutter.app.FlutterActivityDelegate.onActivityResult(FlutterAc ZygoteInit.java:779) E/AndroidRuntime(22266): Caused by: java.lang.IllegalArgumentException: Unsupported value: java.io.FileNotFoundException: Permission denied E/AndroidRuntime(22266): 在io.flutter.plugin.common.StandardMessageCodec .writeValue(StandardMessageCodec.java:293) E/AndroidRuntime(22266): 在 io.flutter.plugin.common.StandardMethodCodec.encodeErrorEnvelope(StandardMethodCodec.java:70) E/AndroidRuntime(22266): 在 io.flutter.plugin.common .MethodChannel$IncomingMethodCallHandler$1.error(MethodChannel.java:208) E/AndroidRuntime(22266): 在 vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.finishWithError(ImageCropperDelegate.java:99) E/AndroidRuntime(22266): 在vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.onActivityResult(ImageCropperDelegate.java:82) E/AndroidRuntime(22266): 在 io.flutter.app.FlutterPluginRegistry.onActivityResult(FlutterPluginRegistry.java:210) E/AndroidRuntime(22266) : 在 io.flutter.app.FlutterActivityDelegate.onActivityResult(FlutterAc tivityDelegate.java:139) E/AndroidRuntime(22266): at io.flutter.app.FlutterActivity.onActivityResult(FlutterActivity.java:138) E/AndroidRuntime(22266): at android.app.Activity.dispatchActivityResult(Activity.java:7009) E/AndroidRuntime(22266): at android.app.ActivityThread.deliverResults(ActivityThread.java:4207) E/AndroidRuntime(22266): ... 9 more Lost connection to device. tivityDelegate.java:139) E/AndroidRuntime(22266): 在 io.flutter.app.FlutterActivity.onActivityResult(FlutterActivity.java:138) E/AndroidRuntime(22266): 在 android.app.Activity.dispatchActivityResult(Activity.java: 7009) E/AndroidRuntime(22266): 在 android.app.ActivityThread.deliverResults(ActivityThread.java:4207) E/AndroidRuntime(22266): ... 9 更多与设备失去连接。 Exited (sigterm)退出(信号项)
Does anyone know how to fix this?有谁知道如何解决这一问题?
On Android Platform, we are required config UCropActivity
into AndroidManifest.xml
below application.在 Android 平台上,我们需要UCropActivity
配置到应用程序下面的AndroidManifest.xml
中。 IOS is not required to do that. IOS 不需要这样做。
Read detail on: https://pub.dev/packages/image_cropper阅读详细信息: https ://pub.dev/packages/image_cropper
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
https://github.com/hnvn/flutter_image_cropper/issues/78#issuecomment-536887525 https://github.com/hnvn/flutter_image_cropper/issues/78#issuecomment-536887525
i have solved it as replace我已经解决了它作为替换
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "27.1.1"
}
if (details.requested.group == 'androidx.core'
&& !details.requested.name.contains('androidx') ) {
details.useVersion "1.0.1"
}
if (requested.group == "androidx") {
if (!requested.name.startsWith("multidex")) {
details.useVersion "${targetSdk}.+"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.