是什么导致Expo的ImagePicker.launchCameraAsync()在某些Android设备上使应用程序崩溃?



我有一个托管的expo应用程序,它使用expo SDK 39和expo图像选择器("expo图像拾取器":"~9.1.0&"(,目前正在生产中。一些安卓用户报告称;不工作";它调用ImagePicker.launchCameraAsync((。我已经能够在运行android 10的Nexus S Emulator上复制它,整个应用程序崩溃。未记录任何错误消息。

我认为这个问题是安卓10特有的,但一些用户在安卓11(和安卓8(上报告了这个问题。

我试图包装一个try-catch块来找出一个错误,但没有成功,应用程序仍然崩溃,也没有日志。

我还尝试制作一个只有上述功能的虚拟应用程序,但我在Nexus S模拟器上得到了相同的结果:应用程序崩溃,没有记录任何报告。

下面是一个触发崩溃的函数调用示例。

const takeImage = async () => {
let result = await ImagePicker.launchCameraAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsEditing: true,
aspect: [4, 3],
quality: 1,
base64: true,
});
if (!result.cancelled) {
console.log(result.uri);
}
};

编辑:在这里可以找到解决方案:https://github.com/expo/expo/issues/18760(添加图像操纵器(

这个问题在github上讨论https://github.com/expo/expo/issues/7946.

世博会文件中的以下注释似乎提到了这个问题:

Note: Make sure that you handle MainActivity destruction on Android. See ImagePicker.getPendingResultAsync.

然而,文档似乎在描述如何处理拍照后发生的崩溃。问题中描述的崩溃在调用imagePicker的相机方法时立即发生。

最新更新