【问题标题】:How to build expo apk using eas build如何使用eas build构建expo apk
【发布时间】:2023-01-05 20:06:02
【问题描述】:

更新 expo 后,它不再支持使用构建 apk 文件博览会构建:android -t apk而是建议使用命令使用 eas 构建eas build -p android --profile 预览但它最终构建了一个 aab 而不是 apk。我查看了新添加的 eas.json 文件,其中包含:

{
  "cli": {
    "version": ">= 0.52.0"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {}
  },
  "submit": {
    "production": {}
  }
}

我阅读了 eas 文档,它建议将我的 eas.json 更改为:

{
  "cli": {
    "version": ">= 0.52.0"
  },
  "build": {
    "preview": {
      "android": {
        "buildType": "apk"
      }
    },
    "preview2": {
      "android": {
        "gradleCommand": ":app:assembleRelease"
      }
    },
    "preview3": {
      "developmentClient": true
    },
    "production": {}
  }
} 

运行构建命令后:eas build -p android --profile 预览

它将应用程序正确构建为 apk 文件并在 android 上安装得很好,但在打开时它会立即自行关闭。尝试重新打开后,它再次关闭,现在提醒应用程序崩溃。

我的 eas.json 文件中有错误还是我遗漏了什么?

【问题讨论】:

    标签: javascript android node.js react-native expo


    【解决方案1】:

    eas.json 中更改生产密钥 对此

    "production": {
        "android": {
           "buildType": "apk"
        }
    }
    

    所以现在你的eas.json 像这样

    {
      "cli": {
        "version": ">= 0.52.0"
      },
      "build": {
        "development": {
          "developmentClient": true,
          "distribution": "internal"
        },
        "preview": {
          "distribution": "internal"
        },
        "production": {
          "android": {
            "buildType": "apk"
          }
        }
      },
      "submit": {
        "production": {}
      }
    }
    

    要构建到 .apk 文件中,您可以使用生产配置文件进行构建。像这样的命令 eas build --profile production --platform android

    【讨论】:

    • 同样的错误。安装后尝试打开时突然关闭
    【解决方案2】:

    这是详细的说明: https://docs.expo.dev/build/eas-json/

    您需要在项目目录中创建 eas.json 为:

    {
      "build": {
        "preview": {
          "android": {
            "buildType": "apk"
          }
        },
        "preview2": {
          "android": {
            "gradleCommand": ":app:assembleRelease"
          }
        },
        "preview3": {
          "developmentClient": true
        },
        "production": {}
      },
      "cli": {
        "version": ">= 0.52.0"
      }
    }
    

    然后使用以下命令:

    eas build -p android --profile preview
    

    问候, 沙米尔

    【讨论】:

    • 谢谢它的工作原理,这是一个优雅的解决方案。那应该是公认的答案。
    • 不客气。它也适用于我,我已经使用这个解决方案很长一段时间了 =)
    • 谢谢兄弟,按预期工作......谢谢
    【解决方案3】:

    我在将我的应用程序升级到 EAS 构建时也遇到了一些问题,原因是因为我使用了来自 expo-constant 的值并且它返回了 null,所以它使我的应用程序崩溃。新的 SDK 将我需要的值移到了expo-device
    我的哨兵也有问题,它会导致应用程序打开时立即崩溃。尝试暂时删除它,看看您的应用程序是否会打开

    【讨论】:

      【解决方案4】:

      cmets 中提供的解决方案有效。我的错误是因为新的SDK版本只支持@react-navigation/native,如果你安装了react-native-screensreact-native-safe-area-context

      对于发现自己在这里的任何人,请使用:

      npm install @react-navigation/native
      
      expo install react-native-screens react-native-safe-area-context
      

      然后按照其他答案的建议编辑 eas.json。我希望这个对你有用

      【讨论】:

        【解决方案5】:

        亲爱的朋友!您是否成功解决了这个问题?

        【讨论】:

          猜你喜欢
          • 2022-06-16
          • 2023-02-17
          • 2023-02-17
          • 2022-09-28
          • 1970-01-01
          • 2021-11-08
          • 2022-06-28
          • 2022-06-23
          • 2023-02-25
          相关资源
          最近更新 更多