如何使用eas build构建expo apk

How to build expo apk using eas build

更新 expo 后,它不再支持使用 expo build:android -t apk 构建 apk 文件,而是建议使用命令 使用 eas 构建eas build -p android --profile preview 但最终构建的是 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 preview

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

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

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

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

评论中提供的解决方案有效。我的错误是由于新的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。希望对你有用

详细说明如下: 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

此致, 沙米尔