【问题标题】:React Native Expo app crashing on android apk file when ask location permission询问位置权限时,React Native Expo 应用程序在 android apk 文件上崩溃
【发布时间】:2021-09-18 15:33:40
【问题描述】:

我对 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 Files\nodejs\node.EXE
      Yarn: 1.22.10 - C:\Users\ISLAMSOFT\AppData\Roaming\npm\yarn.CMD
      npm: 7.6.3 - C:\Program Files\nodejs\npm.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文件来检查错误

【问题讨论】:

    标签: react-native android-permissions expo


    【解决方案1】:

    可能原因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 属性值。

    【讨论】:

    • 感谢您的评论如何检查 apk 文件的错误,我在开发模式下找不到任何错误,并尝试在生产模式下运行应用程序,但也没有错误,仅在 apk 文件中
    • 实际上你无法测试 apk。尝试继续更改您有疑问的代码并继续构建 apk。或者您可以运行此命令expo start --no-dev --minify 以查看是否出现任何错误。
    • 我试过这个“expo start --no-dev --minify”没有错误,当按下这个函数的按钮时它就崩溃了 let { status } = await Permissions.askAsync(Permissions.LOCATION);
    • 这现在在开发中崩溃了吗?还是在apk上?
    • 仅适用于 apk 文件
    猜你喜欢
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2022-07-21
    • 1970-01-01
    • 2023-03-12
    • 2019-07-14
    • 2023-02-02
    相关资源
    最近更新 更多