简体   繁体   English

抖动 image_cropper 崩溃

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM