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>