Flutter图片裁剪器崩溃

3

我尝试使用这个插件裁剪图片,在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)将不正确地覆盖android.graphics.drawable.Drawable中的package-private方法 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.doInBackground(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: 在向activity {com.example.droidemo/com.example.droidemo.MainActivity}交付结果ResultInfo{who=null, request=69, result=96, data=Intent { (has extras) }}时出错:java.lang.IllegalArgumentException: 不支持的值: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):

有人知道怎么修复这个问题吗?

2个回答

8
在 Android 平台上,我们需要在应用程序下面的 AndroidManifest.xml 中配置 UCropActivity。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

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

我已经解决了它,用“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}.+"
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接