Я создаю собственный проект, использующий expo. У меня Windows, поэтому я включаю WSL и устанавливаю ubuntu из магазина Microsoft. Затем я запускаю 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": [
      "**/*"
    ],
  }
}
4
jak 13 Окт 2019 в 02:36
Между прочим, пожалуйста, не сердитесь на меня за то, что я спрашиваю об этом; Я знаю, что плохо формулирую вопросы
 – 
jak
13 Окт 2019 в 02:37
1
Привет, джак, добро пожаловать в stackoverflow! похоже, это должно работать, как ожидалось. я только предполагаю, что вы запускаете expo build:android из неправильного каталога. Я скопировал и вставил ваш точный app.json сверху в новый пустой проект и запустил expo build:android, и он сработал с первой попытки без каких-либо изменений. вы можете клонировать его и проверить себя, если хотите: github.com/brentvatne/stackoverflow-question-58359479
 – 
brentvatne
13 Окт 2019 в 04:39
Я починил это. Я так и не понял, почему это не работает. В любом случае я исправил это, создав новый проект, скопировав весь код и построив его. Это сработало. В любом случае спасибо за помощь
 – 
jak
13 Окт 2019 в 04:42

4 ответа

Для всех, кто заходит на эту страницу, добавьте следующее в свой app.json.

"android": {
  "package": "com.yourcompany.yourappname",
  "versionCode": 1
}
2
Kyle Laster 7 Апр 2020 в 07:40

Это сработало для меня, вы можете попробовать это

{
  "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
    }
0
kdblue 15 Апр 2020 в 20:02

В моем случае я объявил свойство «android» на верхнем уровне в app.json. Скорее, он должен был быть указан в свойстве "expo" как подключа. Ага!

0
rajarshi 12 Май 2020 в 05:35

Я только что приехал сюда после того, как столкнулся с той же проблемой. Оказывается, мой app.config.js не передавал конфигурацию от app.json.

Я исправил это, изменив:

export default {
  extra: {
    [...]
  },
};

Чтобы :

export default ({config}) => {
  return Object.assign(config,
    {
      extra: {
        [...]
      }
    });
};
0
jimbofreedman 13 Май 2020 в 20:37