React Native Expo应用程序在请求位置权限时在android apk文件上崩溃



我对expo独立应用程序有问题。问题在于请求位置的权限。在开发模式下,应用程序请求位置权限,并且运行良好。没有虫子。使用expo-build:android构建应用程序后,它将创建一个android独立应用程序。安装该APK并尝试访问请求位置权限的同一页面后,该应用程序崩溃并重新启动。

Expo CLI 4.7.3 environment info:
System:
OS: Windows 10 10.0.19042
Binaries:
Node: 14.15.4 - C:Program Filesnodejsnode.EXE
Yarn: 1.22.10 - C:UsersISLAMSOFTAppDataRoamingnpmyarn.CMD
npm: 7.6.3 - C:Program Filesnodejsnpm.CMD
IDEs:
Android Studio: Version  4.2.0.0 AI-202.7660.26.42.7486908
npmPackages:
expo: ~40.0.0 => 40.0.1
react: 16.13.1 => 16.13.1
react-dom: 16.13.1 => 16.13.1
react-native: https://github.com/expo/react-native/archive/sdk-40.0.1.tar.gz => 0.63.2
react-native-web: ~0.13.12 => 0.13.18
Expo Workflow: managed

在app.json中,我添加了这个,但没有解决问题

"android": {
"permissions":[
"ACCESS_COARSE_LOCATION",
"ACCESS_FINE_LOCATION",
"CAMERA",
"READ_EXTERNAL_STORAGE",
"WRITE_EXTERNAL_STORAGE"
]
},

我不知道如何测试apk文件来检查错误

可能的原因1


几天前,我在expo应用程序中遇到了同样的问题。在那里,我的应用程序需要AUDIO_RECORDING权限。该应用程序在开发过程中表现良好,但在生产过程中崩溃了。

在获得useEffect中的权限之前,我发现我错过了await关键字。类似这样的东西:

useEffect(() => {
Permissions.askAsync(Permissions.AUDIO_RECORDING)
}, [])

然后我完全删除了上面的代码。然后,从TouchableOpacity按钮的onPressIn事件获取许可。代码是这样的:

const startRecording = async () => {
const { status } = await Permissions.getAsync(Permissions.AUDIO_RECORDING);
if (status !== 'granted') return;

// Other codes...
}

你应该仔细检查一下你是如何获得许可的。

可能原因2


有时expo应用程序会因为错误的css值而崩溃,比如

{flex: '1'}

代替

{flex: 1}

这种小错误使我的应用程序多次崩溃。您应该检查所有css属性值。

相关内容

  • 没有找到相关文章

最新更新