I followed @bacon 's fastlane tutorial here Automating Standalone Expo App Builds and Deployments with Fastlane and Expo CLI | by Mark Glagola | Exposition.
After upgrading my expo+expokit version from 31 to 32, I now get the following error message:
We noticed you did not build a standalone app with this SDK version and release channel before. Remember that OTA updates will not work with the app built with different SDK version and/or release channel. Read more: https://docs.expo.io/versions/latest/guides/publishing.html#limitations
Obviously being ejected to Expokit means that I don’t have access to the expo build
command.
Xcode and Android Studio builds are working and are published on the respective app stores.
Is that because I update “buildNumber” and “versionCode” every time I merge a PR and that creates a version mismatch?
How can I debug/fix this? OTA updates are VERY useful.
package.json
{
“name”: “xxx”,
“version”: “2.0.0”,
“private”: true,
“main”: “./node_modules/expo/AppEntry.js”,
“scripts”: {
“start”: “expo start”,
“eject”: “expo eject”,
“android”: “expo start --android”,
“ios”: “expo start --ios”,
“test”: “jest”,
“storybook”: “storybook start -p 7007”,
“test:coverage”: “jest --coverage && open coverage/lcov-report/index.html”,
“postinstall”: “rndebugger-open --expo”
},
“jest”: {
“preset”: “jest-expo”,
“setupFiles”: [
“./tests/setup.js”
],
“collectCoverageFrom”: [
“src/**/*.js”
]
},
“husky”: {
“hooks”: {
“pre-push”: “npm test”
}
},
“dependencies”: {
“@expo/vector-icons”: “^9.0.0”,
“card-validator”: “^6.1.0”,
“date-fns”: “^1.29.0”,
“downshift”: “^2.2.3”,
“expo”: “^32.0.0”,
“expo-analytics”: “^1.0.7”,
“expo-camera”: “^1.1.0”,
“expo-localization”: “^1.0.0”,
“expo-permissions”: “^1.1.0”,
“expo-postpublish-slack-notify”: “^1.2.0”,
“expokit”: “32.0.6”,
“formik”: “^1.3.0”,
“intl”: “^1.2.5”,
“lodash”: “^4.17.11”,
“native-base”: “^2.8.1”,
“prop-types”: “^15.6.2”,
“react”: “16.5.0”,
“react-native”: “https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz”,
“react-native-btr”: “^1.0.13”,
“react-native-circular-progress”: “^1.0.1”,
“react-native-confirmation-code-input”: “^1.0.4”,
“react-native-credit-card-input”: “^0.4.1”,
“react-native-date-picker”: “^2.2.1”,
“react-native-datepicker”: “^1.7.2”,
“react-native-dotenv”: “^0.2.0”,
“react-native-elements”: “^0.19.1”,
“react-native-formik”: “^1.7.0”,
“react-native-iphone-x-helper”: “^1.2.0”,
“react-native-keyboard-aware-scroll-view”: “^0.7.2”,
“react-native-modal-dropdown”: “^0.6.2”,
“react-native-paper”: “^2.3.0”,
“react-native-picker-select”: “^5.1.1”,
“react-native-simple-picker”: “^3.1.1”,
“react-native-snap-carousel”: “^3.7.5”,
“react-navigation”: “^2.18.2”,
“react-navigation-material-bottom-tabs”: “^1.0.0”,
“react-redux”: “^5.0.7”,
“redux”: “^4.0.0”,
“redux-logger”: “^3.0.6”,
“redux-persist”: “^5.10.0”,
“redux-saga”: “^0.16.0”,
“sentry-expo”: “~1.9.0”,
“stripe-client”: “^1.1.5”,
“yup”: “^0.26.6”
},
“devDependencies”: {
“@babel/core”: “^7.1.6”,
“@babel/runtime”: “^7.2.0”,
“@dump247/storybook-state”: “^1.5.2”,
“@storybook/addon-actions”: “^3.4.11”,
“@storybook/addon-links”: “^3.4.10”,
“@storybook/addons”: “^3.4.10”,
“@storybook/react-native”: “^3.4.10”,
“babel-core”: “^7.0.0-bridge.0”,
“babel-eslint”: “^7.2.3”,
“babel-preset-expo”: “5”,
“babel-runtime”: “^6.26.0”,
“enzyme”: “^3.8.0”,
“enzyme-adapter-react-16”: “^1.7.1”,
“eslint”: “^4.0.0”,
“eslint-config-prettier”: “^3.0.1”,
“eslint-config-react-app”: “^2.1.0”,
“eslint-plugin-flowtype”: “^2.50.0”,
“eslint-plugin-import”: “^2.14.0”,
“eslint-plugin-jsx-a11y”: “^5.1.1”,
“eslint-plugin-prettier”: “^2.6.2”,
“eslint-plugin-react”: “^7.11.1”,
“husky”: “^1.0.0-rc.15”,
“identity-obj-proxy”: “^3.0.0”,
“jest-expo”: “^32.0.0”,
“jest-fetch-mock”: “^1.6.6”,
“prettier”: “^1.14.2”,
“react-dom”: “^16.3.1”,
“react-native-debugger-open”: “^0.3.17”,
“react-test-renderer”: “16.3.1”,
“redux-devtools-extension”: “^2.13.5”,
“redux-mock-store”: “^1.5.3”
}
}
app.json
{
“expo”: {
“name”: “Xxxxxx”,
“icon”: “./assets/system/ios-icon.png”,
“version”: “2.6.7”,
“slug”: “xxxxxx”,
“sdkVersion”: “32.0.0”,
“orientation”: “portrait”,
“splash”: {
“backgoundColor”: “#fff”,
“image”: “./assets/system/splash_new.png”,
“resizeMode”: “cover”
},
“ios”: {
“bundleIdentifier”: “com.xxxxxx.xxxxxx”,
“publishBundlePath”: “ios/xxxxxx/Supporting/shell-app.bundle”,
“publishManifestPath”: “ios/xxxxxx/Supporting/shell-app-manifest.json”,
“buildNumber”: “2.6.6”,
“infoPlist”: {
“NSCameraUsageDescription”: “This app uses the camera to take pictures of the user’s food and scan QR codes.”,
“NSPhotoLibraryAddUsageDescription”: “This app uses the photo library to select pictures of the user’s food.”
},
“supportsTablet”: true
},
“android”: {
“package”: “com.xxxxxx.xxxxxx”,
“publishBundlePath”: “android/app/src/main/assets/shell-app.bundle”,
“publishManifestPath”: “android/app/src/main/assets/shell-app-manifest.json”,
“permissions”: [
“CAMERA”,
“READ_EXTERNAL_STORAGE”,
“WRITE_EXTERNAL_STORAGE”
],
“versionCode”: 266
},
“isDetached”: true,
“detach”: {
“iosExpoViewUrl”: “https://s3.amazonaws.com/exp-exponent-view-code/ios-v2.10.2-sdk32.0.0-c59c23cd-1d49-49d2-a633-d03f9d554cf6.tar.gz”,
“androidExpoViewUrl”: “https://s3.amazonaws.com/exp-exponent-view-code/android-v2.10.7-sdk32.0.0-3ff7f3bf-8e53-4d61-b963-1d7d92a77d79.tar.gz”
},
“scheme”: “expc48567a3829f44febfcb2768891e5bf8”
}
}
Info.plist and build.gradle available upon request.