收到错误"Your project must have an Android package set in app.json"尽管我在app.json中设置了一个Android软件包



我正在使用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' }

最新更新