Error on Play Store Eas Build - Expo Updates "The embedded manifest is invalid or could not be read. Make sure you have configured expo-updates correctly in android/app/build.gradle."

Our expo bare workflow app on android was working fine before in app purchase integration. After implementing Expo In App Purchases package, IOS works completely fine and already available in Stores. Android works fine on emulator and on our devices when it is installed with .apk or directly connected to development environment. But when we build for Play Store with "eas build --platform android " and upload .aab to Play Store, it gives an error on play store and app crashes instantly on any device.

The error is: “The embedded manifest is invalid or could not be read. Make sure you have configured expo-updates correctly in android/app/build.gradle.” You can see the full error below.

We have tried to take a build with “expo build:android” but when we upload that .aab we got another error. We couldn’t event start the release this time. You can see below:

We have tried to uninstall expo-updates even if we didin’t want to, but we got the same error. I checked documentation several times for both eas and expo-updates. We uninstall and re-install updates, nothing has changed. We couldn’t find any resources suggesting a direct solution related to these errors.

The problem is we cannot debug properly because it is only when it is on the store. Do you have any suggestions?

It is really frustrating. We need to solve this one way or another. Any suggestions?

eas-cli --version
eas-cli/0.53.1 darwin-arm64 node-v16.14.0

SDK Version: 45.0.0

package.json

{
  "name": "ourapp",
  "version": "1.2.7",
  "scripts": {
    "start": "expo start --dev-client",
    "android": "expo run:android",
    "ios": "expo run:ios",
    "web": "expo start --web",
    "eject": "expo eject"
  },
  "dependencies": {
    "@react-native-async-storage/async-storage": "~1.17.3",
    "@react-navigation/bottom-tabs": "^6.3.1",
    "@react-navigation/native": "^6.0.8",
    "@react-navigation/native-stack": "^6.6.2",
    "@react-navigation/stack": "^6.2.1",
    "axios": "^0.26.1",
    "expo": "^45.0.0",
    "expo-app-loading": "~2.0.0",
    "expo-device": "~4.2.0",
    "expo-file-system": "~14.0.0",
    "expo-firebase-analytics": "~7.0.0",
    "expo-font": "~10.1.0",
    "expo-image-picker": "~13.1.1",
    "expo-in-app-purchases": "~13.0.0",
    "expo-linking": "~3.1.0",
    "expo-localization": "~13.0.0",
    "expo-location": "~14.2.2",
    "expo-modules-core": "^0.9.2",
    "expo-notifications": "~0.15.2",
    "expo-sharing": "~10.2.0",
    "expo-splash-screen": "~0.15.1",
    "expo-status-bar": "~1.3.0",
    "expo-task-manager": "~10.2.1",
    "formik": "^2.2.9",
    "google-spreadsheet": "^3.2.0",
    "i18next": "^21.8.3",
    "moment": "^2.29.2",
    "native-base": "^3.3.1",
    "react": "17.0.2",
    "react-dom": "17.0.2",
    "react-i18next": "^11.16.9",
    "react-native": "0.68.2",
    "react-native-flash-message": "^0.2.1",
    "react-native-gesture-handler": "~2.2.1",
    "react-native-keyboard-aware-scroll-view": "^0.9.5",
    "react-native-safe-area-context": "4.2.4",
    "react-native-screens": "~3.11.1",
    "react-native-simple-markdown": "^1.1.0",
    "react-native-svg": "12.3.0",
    "react-native-web": "0.17.7",
    "react-native-webview": "11.18.1",
    "react-redux": "^7.2.6",
    "redux": "^4.1.2",
    "redux-thunk": "^2.4.1",
    "yup": "^0.32.11",
    "expo-updates": "~0.13.2"
  },
  "devDependencies": {
    "@babel/core": "^7.12.9",
    "expo-module-scripts": "^2.0.0"
  },
  "private": true
}

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="online.ourapp.mobile">
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  <uses-permission android:name="android.permission.CAMERA"/>
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.RECORD_AUDIO"/>
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  <uses-permission android:name="android.permission.VIBRATE"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <queries>
    <intent>
      <action android:name="android.intent.action.VIEW"/>
      <category android:name="android.intent.category.BROWSABLE"/>
      <data android:scheme="https"/>
    </intent>
  </queries>
  <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true">
    <meta-data android:name="expo.modules.updates.ENABLED" android:value="true"/>
    <meta-data android:name="expo.modules.updates.EXPO_SDK_VERSION" android:value="45.0.0"/>
    <meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ALWAYS"/>
    <meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="0"/>
    <meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://exp.host/@eddyildiz/ourapp"/>
    <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:screenOrientation="portrait" android:exported="true">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="ourapp"/>
        <data android:scheme="online.ourapp.mobile"/>
      </intent-filter>
    </activity>
    <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
    <activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity" android:theme="@style/Base.Theme.AppCompat"/>
  </application>
</manifest>

Update:
We created another realease bundle via Android Studio. I used the same signing credentials fetched from Expo, Android Studio shows no errors during the build, yet we got the same error on Play Store.

  1. When we get the bundle with expo build:android, app works when it is downladed from Play Store but gets stuck on subscription screen. My guess is this is because expo build is not compatible with bare workflow.
  2. When we get the build with eas OR directly from android studio it gives this “manifest” errors I mentioned above.

How can we make this app have a VALID MANIFEST? Does anyone have any suggestions about how to debug this? Can I rebuild the entire Android folder? It has been almost 10 days and we couldn’t solve this issue.

2 Likes

We have the same issue. Currently, haven’t found any solution…