expo / expo

An open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web.
https://docs.expo.dev
MIT License
34.24k stars 5.48k forks source link

Bug with EAS build with expo-updates 0.11.6 with Expo 44 #16805

Closed Bram-dc closed 2 years ago

Bram-dc commented 2 years ago

Summary

Build process goes without errors and the app is also successfully uploading to TestFlight. But when launching the app code from the expo-updates is crashing the app on lauch in a built and submitted app.

Managed or bare workflow? If you have ios/ or android/ directories in your project, the answer is bare!

managed

What platform(s) does this occur on?

iOS

SDK Version (managed workflow only)

44

Environment

expo-env-info 1.0.2 environment info: System: OS: Windows 10 10.0.19043 Binaries: Node: 14.18.1 - C:\Program Files\nodejs\node.EXE Yarn: 1.22.4 - C:\Program Files (x86)\Yarn\bin\yarn.CMD npm: 6.14.15 - C:\Program Files\nodejs\npm.CMD IDEs: Android Studio: Version 4.1.0.0 AI-201.8743.12.41.7042882 npmPackages: expo: 44.0.0 => 44.0.0 react: 17.0.1 => 17.0.1 react-dom: 17.0.1 => 17.0.1 react-native: 0.64.3 => 0.64.3 Expo Workflow: managed

Reproducible demo

Crashlog Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Triggered by Thread: 9

Last Exception Backtrace: 0 CoreFoundation 0x1a96cddc0 __exceptionPreprocess + 220 (NSException.m:199) 1 libobjc.A.dylib 0x1be22a7a8 objc_exception_throw + 60 (objc-exception.mm:565) 2 MyBird 0x104042b10 -[EXUpdatesAppController throwException:] + 24 (EXUpdatesAppController.m:417) 3 MyBird 0x10405600c 0x104024000 + 204812 4 MyBird 0x1040556c0 0x104024000 + 202432 5 libdispatch.dylib 0x1a92b8a84 _dispatch_call_block_and_release + 32 (init.c:1466) 6 libdispatch.dylib 0x1a92ba81c _dispatch_client_callout + 20 (object.m:559) 7 libdispatch.dylib 0x1a92c2004 _dispatch_lane_serial_drain + 620 (inline_internal.h:2557) 8 libdispatch.dylib 0x1a92c2c00 _dispatch_lane_invoke + 404 (queue.c:3862) 9 libdispatch.dylib 0x1a92cd4bc _dispatch_workloop_worker_thread + 764 (queue.c:6589) 10 libsystem_pthread.dylib 0x1f540e7a4 _pthread_wqthread + 276 (pthread.c:2437) 11 libsystem_pthread.dylib 0x1f541574c start_wqthread + 8

Exception code EXUpdatesAppController.m:417 - (void)markSuccessfulLaunchForLaunchedUpdate { if (_isEmergencyLaunch) { return; } dispatch_async(_database.databaseQueue, ^{ EXUpdatesUpdate *launchedUpdate = self.launchedUpdate; if (!launchedUpdate) { return; } NSError *error; [self->_database incrementSuccessfulLaunchCountForUpdate:launchedUpdate error:&error]; if (error) { NSLog(@"Failed to increment successful launch count for update: %@", error.localizedDescription); } }); }

Installed packages I will try to narrow down the error causing package combination "expo": "44.0.0", "expo-application": "~4.0.1", "expo-asset": "~8.4.6", "expo-blur": "~11.0.0", "expo-constants": "~13.0.1", "expo-device": "~4.1.0", "expo-haptics": "~11.1.0", "expo-linking": "~3.0.0", "expo-localization": "~12.0.0", "expo-location": "~14.0.1", "expo-navigation-bar": "~1.1.1", "expo-notifications": "~0.14.0", "expo-splash-screen": "~0.14.1", "expo-status-bar": "~1.2.0", "expo-system-ui": "~1.1.0", "expo-updates": "~0.11.6", "expo-web-browser": "~10.1.0", "react": "17.0.1", "react-dom": "17.0.1", "react-hook-form": "^7.3.5", "react-native": "0.64.3", "react-native-animation-hooks": "^1.0.1", "react-native-gesture-handler": "~2.1.0", "react-native-keyboard-aware-scroll-view": "^0.9.5", "react-native-modalize": "^2.0.8", "react-native-picker-select": "^8.0.4", "react-native-safe-area-context": "3.3.2", "react-native-screens": "~3.10.1", "react-native-webview": "11.15.0",

Edai commented 2 years ago

I am encountering an issue similar. Did you find the solution?

Bram-dc commented 2 years ago

Yes, I did not read the docs correct, I forgot to supply the updates.url and runTime.policy field:

Tip: Use eas update:configure

But I've already switched back to the old build system, since eas publish is behind a paywall.

error

claudiofus commented 2 years ago

I've just updated to SDK 45 and I'm facing the same issue in a managed workflow with eas build, the app crashes on start, this is the error log:

0x000000010302da24 -[RCTBridge setUp] + 48 (RCTBridge.m:365)
0x000000010302d230 -[RCTBridge initWithDelegate:bundleURL:moduleProvider:launchOptions:] + 236 (RCTBridge.m:231)
0x0000000102f176dc init + 20 (<compiler-generated>:0)
0x0000000102f176dc init + 32 (ExpoUpdatesReactDelegateHandler.swift:0)
0x0000000102f176dc specialized ExpoUpdatesReactDelegateHandler.appController(_:didStartWithSuccess:) + 196
0x0000000102f16d44 appController + 8 (<compiler-generated>:0)
0x0000000102f16d44 @objc ExpoUpdatesReactDelegateHandler.appController(_:didStartWithSuccess:) + 52
0x0000000102ef33fc __73-[EXUpdatesAppController appLoaderTask:didFinishWithLauncher:isUpToDate:]_block_invoke + 52 (EXUpdatesAppController.m:262)

and this is my package.json:

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "build-submit": "eas build -p ios --profile diritto --auto-submit",
    "build-old-submit": "npx cross-env APP_ENV=diritto expo build:ios --no-wait -t archive"
  },
  "dependencies": {
    "@expo/ngrok": "^4.1.0",
    "@expo/metro-config": "^0.3.18",
    "@react-native-async-storage/async-storage": "^1.17.3",
    "@react-native-masked-view/masked-view": "^0.2.6",
    "@react-navigation/drawer": "^5.12.9",
    "@react-navigation/native": "^5.9.8",
    "@react-navigation/stack": "^5.14.9",
    "expo": "^45.0.0",
    "expo-ads-admob": "~13.0.0",
    "expo-constants": "~13.1.1",
    "expo-device": "^4.2.0",
    "expo-linear-gradient": "^11.3.0",
    "expo-linking": "^3.1.0",
    "expo-splash-screen": "^0.15.1",
    "expo-store-review": "^5.2.0",
    "firebase": "^9.6.11",
    "prop-types": "^15.7.2",
    "react": "17.0.2",
    "react-native": "0.68.2",
    "react-native-chart-kit": "^6.11.0",
    "react-native-gesture-handler": "~2.2.1",
    "react-native-reanimated": "~2.8.0",
    "react-native-safe-area-context": "4.2.4",
    "react-native-screens": "~3.11.1",
    "react-native-svg": "^12.3.0",
    "sentry-expo": "^4.2.0"
  },
  "devDependencies": {
    "babel-preset-expo": "^9.1.0",
    "eslint-config-handlebarlabs": "^0.0.6",
    "prettier": "^2.7.1",
    "react-devtools": "^4.24.7",
    "react-native-debugger": "^1.1.0"
  },
  "private": true
}

It works fine with old build method but with eas build it doesn't work at all, I've tried with app.json updates: {enabled: false} and removing expo-updates from package.json as suggested from @brentvatne but didn't work.

aike19115 commented 2 years ago

I'm facing the same problem, I suggest to re-open this ticket.

Screenshot 2022-07-25 at 10 12 52
% expo doctor
🎉 Didn't find any issues with the project!
% expo config
{
  assetBundlePatterns: [
    '**/*'
  ],
  icon: './src/assets/icon.png',
  name: 'My Beer',
  orientation: 'portrait',
  owner: 'beerinabox',
  plugins: [
    [
      'expo-image-picker',
      {
        cameraPermission: 'Allow $(PRODUCT_NAME) to access your camera when you decide to take a picture for your review',
        photosPermission: 'Allow $(PRODUCT_NAME) to access your photos when you decide to add a photo to your review'
      }
    ]
  ],
  scheme: 'my-beer',
  slug: 'my-beer',
  version: '1.0.4',
  description: undefined,
  sdkVersion: '44.0.0',
  platforms: [
    'ios',
    'android'
  ],
  android: {
    package: 'nl.beerinabox.mybeer',
    permissions: [
      'android.permission.CAMERA',
      'android.permission.READ_EXTERNAL_STORAGE',
      'android.permission.WRITE_EXTERNAL_STORAGE',
      'android.permission.RECORD_AUDIO'
    ],
    versionCode: 4,
    adaptiveIcon: {
      foregroundImage: './src/assets/adaptive-icon.png',
      backgroundColor: '#FFFFFF'
    }
  },
  ios: {
    bundleIdentifier: 'nl.beerinabox.my-beer',
    buildNumber: '1',
    supportsTablet: false,
    config: {
      usesNonExemptEncryption: false
    },
    infoPlist: {
      NSCameraUsageDescription: 'Allow $(PRODUCT_NAME) to access your camera when you decide to take a picture for your review',
      NSPhotoLibraryUsageDescription: 'Allow $(PRODUCT_NAME) to access your photos when you decide to add a photo to your review',
      NSMicrophoneUsageDescription: 'Allow $(PRODUCT_NAME) to access your microphone'
    }
  },
  splash: {
    image: './src/assets/splash.png',
    resizeMode: 'contain',
    backgroundColor: '#ffffff'
  },
  updates: {
    fallbackToCacheTimeout: 0
  },
  _internal: {
    isDebug: false,
    projectRoot: '/Users/aike/react-native/beer-in-a-box',
    staticConfigPath: '/Users/aike/react-native/beer-in-a-box/app.json',
    packageJsonPath: '/Users/aike/react-native/beer-in-a-box/package.json',
    dynamicConfigPath: {},
    pluginHistory: {
      'expo-image-picker': {
        name: 'expo-image-picker',
        version: '12.0.2'
      }
    }
  }
}