抖动image_cropper崩溃

时间:2018-12-13 08:27:03

标签: android flutter

我尝试使用此插件裁剪图像,并在iOS上运行良好,但在Android上,应用程序将崩溃。 控制台就是这样说的。

  

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)   会错误地覆盖了package-private方法   android.graphics.drawable.Drawable D / BitmapLoadUtils(22266):   maxBitmapSize:2078 D / BitmapWorkerTask(22266):Uri方案:文件   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.doInBackground(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):位于java.lang.Thread.run(Thread.java:761)   E / AndroidRuntime(22266):致命异常:main   E / AndroidRuntime(22266):进程:com.example.droidemo,PID:22266   E / AndroidRuntime(22266):java.lang.RuntimeException:失败   传递结果ResultInfo {who = null,request = 69,result = 96,   data = Intent {(有附加项)}}进行活动   {com.example.droidemo / com.example.droidemo.MainActivity}:   java.lang.IllegalArgumentException:不支持的值:   java.io.FileNotFoundException:权限被拒绝   E / AndroidRuntime(22266):在   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(本机   方法)E / AndroidRuntime(22266):at   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):原因:   java.lang.IllegalArgumentException:不支持的值:   java.io.FileNotFoundException:权限被拒绝   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(FlutterActivityDelegate.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个与设备的连接断开。已退出   (sigterm)

有人知道如何解决此问题吗?

2 个答案:

答案 0 :(得分:2)

在Android平台上,我们需要将UCropActivity配置到应用程序下面的AndroidManifest.xml中。不需要IOS这么做。

详细了解:https://pub.dev/packages/image_cropper

<activity             
    android:name="com.yalantis.ucrop.UCropActivity"             
    android:screenOrientation="portrait"             
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>

答案 1 :(得分:1)

https://github.com/hnvn/flutter_image_cropper/issues/78#issuecomment-536887525

我已经解决了替换问题

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}.+"
    }