我正在使用expo构建一个反应原生项目。 我在Windows上,所以我启用WSL并从Microsoft Store安装ubuntu。 接下来我运行expo build:android。 我收到以下错误,
Your project must have an Android package set in app.json.
所以我看了一下博览会教程页面,它说要添加,
"android": {
"package": "com.yourcompany.yourappname"
}
我将其添加到app.json
文件中,但出现相同的错误。 我对为什么错误不会消失一无所知,因为我已经查看了教程页面和我的代码,并且我显然拥有所有必填字段。
这是我一直在看的教程页面:https://docs.expo.io/versions/latest/distribution/building-standalone-apps/
无论如何,这是我的app.json文件,
{
"expo": {
"name": "First React App",
"slug": "FirstReactNativeApp",
"privacy": "public",
"sdkVersion": "35.0.0",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"ios": {
"bundleIdentifier": "com.yourcompany.yourappname",
"supportsTablet": true,
},
"android": {
"package": "com.yourcompany.yourappname",
},
"platforms": [
"ios",
"android",
"web"
],
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
}
}
对于访问此页面的任何人,请将以下内容添加到您的 app.json。
"android": {
"package": "com.yourcompany.yourappname",
"versionCode": 1
}
遇到同样的问题后,我刚到这里。事实证明,我的app.config.js
没有从app.json
传递配置。
我通过更改来修复它:
export default {
extra: {
[...]
},
};
自:
export default ({config}) => {
return Object.assign(config,
{
extra: {
[...]
}
});
};
这对我有用,你可以试试这个
{
"expo": {
"name": "kd-guess-number",
"slug": "kd-guess-number",
"sdkVersion": "37.0.0",
"privacy": "public",
"platforms": [
"ios",
"android",
"web"
],
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true
},
"description": "",
"android": {
"package": "com.yourcompany.yourappname",
"versionCode": 1
}
}
}
你应该在最后添加它(请参阅上面的代码以供参考(
"android": {
"package": "com.yourcompany.yourappname",
"versionCode": 1
}
我知道我可能会迟到,但我发现至少对我自己来说这个问题是因为世博会创建-反应-本机应用程序可能会构建与它实际想要的不同 app.json(我可能是错的(。我创建了一个新的世博会应用程序并比较了两者。我发现 json 的结构发生了变化,android
应该嵌套在expo
中,如下所示。顺便说一句,这是我在堆栈溢出中的第一个答案。
正确:
{
"expo": {
"name": "youappname",
"android": {
"package": "com.web.app",
"versionCode": 1
}
}
}
就我而言,我已经在app.json的顶层声明了"android"属性。相反,它应该作为子键列在"expo"属性中。咄!
//你必须在/android/app/build.gradle 中更新它
在我的app.json中添加包名称和版本代码后,我仍然收到相同的错误
"android": {
"package": "com.yourcompany.yourappname",
"versionCode": 1
}
注意:我使用 Expo-CLI,所以我不知道这是否适用于本机 CLI
我能够解决手头的问题,甚至解决了模拟器抛出"像素启动器不断停止">错误的问题。
在终端中,导航到项目目录并运行以下命令:
> C:project_dir> npx expo install react-native@0.69.5 expo-dev-client@~1.3.0
> C:project_dir> npx expo install expo-dev-client@~1.2.1
然后运行 npm 命令以运行模拟器
> C:project_dir> npm run android
确保在应用名称包中具有相同的 slug 值:
slug: 'myslug',
android: { package: 'com.mydomain.myslug' }