我对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属性值。