我尝试使用此插件裁剪图像,并在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)
有人知道如何解决此问题吗?
答案 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}.+"
}