Hello,
We have recently wanted to implement In-App purchases (with react-native-purchases) without ejecting from expo and came across this article detailing how it is possible by using expo dev clients.
I followed the first part of the article and setup two scripts in my package.json:
"eas:build:dev:client:android": "yarn configure:develop && eas build --profile development --platform android --clear-cache",
"eas:build:dev:client:ios": "yarn configure:develop && eas build --profile development --platform ios --clear-cache",
The
yarn configure:develop
is a custom script that sets up my envs and versions.
eas.json looks like so:
{
"build": {
"release": {...},
"staging": {...},
"development": {
"android": {
"buildType": "apk"
},
"ios": {
"cache": {
"disabled": true,
"key": "invalidate"
}
},
"releaseChannel": "development",
"developmentClient": true,
"distribution": "internal"
}
},
"cli": {
"version": ">= 0.42.4",
"requireCommit": true
}
}
Expo info
expo --version -> 5.0.3
eas -v -> eas-cli/0.42.4 darwin-x64 node-v14.17.0
EAS build output
IOS:
Stage: “Install Pods”
Installing pods
Installing unimodules:
expo-application@3.2.0 from ../node_modules/expo-application/ios
expo-av@9.2.3 from ../node_modules/expo-av/ios
expo-clipboard@1.1.0 from ../node_modules/expo-clipboard/ios
expo-constants@11.0.2 from ../node_modules/react-native-unimodules/node_modules/expo-constants/ios
expo-device@3.3.0 from ../node_modules/expo-device/ios
expo-error-recovery@2.2.0 from ../node_modules/expo-error-recovery/ios
expo-facebook@11.3.1 from ../node_modules/expo-facebook/ios
expo-file-system@11.1.3 from ../node_modules/expo-file-system/ios
expo-firebase-analytics@4.1.0 from ../node_modules/expo-firebase-analytics/ios
expo-firebase-core@3.1.0 from ../node_modules/expo-firebase-core/ios
expo-font@9.2.1 from ../node_modules/expo-font/ios
expo-image-loader@2.2.0 from ../node_modules/expo-image-loader/ios
expo-image-manipulator@9.2.2 from ../node_modules/expo-image-manipulator/ios
expo-image-picker@10.2.3 from ../node_modules/expo-image-picker/ios
expo-in-app-purchases@11.0.1 from ../node_modules/expo-in-app-purchases/ios
expo-json-utils@0.2.0 from ../node_modules/expo-json-utils/ios
expo-keep-awake@9.2.0 from ../node_modules/expo-keep-awake/ios
expo-linear-gradient@9.2.0 from ../node_modules/expo-linear-gradient/ios
expo-location@12.1.2 from ../node_modules/expo-location/ios
expo-mail-composer@10.2.2 from ../node_modules/expo-mail-composer/ios
expo-manifests@0.2.2 from ../node_modules/expo-manifests/ios
expo-media-library@12.1.2 from ../node_modules/expo-media-library/ios
expo-modules-core@0.2.0 from ../node_modules/expo-modules-core/ios
expo-notifications@0.12.3 from ../node_modules/expo-notifications/ios
expo-permissions@12.1.1 from ../node_modules/expo-permissions/ios
expo-store-review@4.1.0 from ../node_modules/expo-store-review/ios
expo-updates@0.8.5 from ../node_modules/expo-updates/ios
expo-updates-interface@0.5.0 from ../node_modules/expo-dev-client/node_modules/expo-updates-interface/ios
expo-web-browser@9.2.0 from ../node_modules/expo-web-browser/ios
unimodules-app-loader@2.2.0 from ../node_modules/unimodules-app-loader/ios
unimodules-core@7.1.2 from ../node_modules/@unimodules/core/ios
unimodules-react-native-adapter@6.3.9 from ../node_modules/@unimodules/react-native-adapter/ios
expo-splash-screen@0.11.4 from ../node_modules/expo-splash-screen/ios
expo-structured-headers@1.1.1 from ../node_modules/expo-structured-headers/ios
unimodules-task-manager-interface@6.2.0 from ../node_modules/unimodules-task-manager-interface/ios
expo-task-manager@9.2.2 from ../node_modules/expo-task-manager/ios
Found some duplicated unimodule packages. Installed the ones with the highest version number.
Make sure following dependencies of your project are resolving to one specific version:
expo-updates-interface, expo-constants
Auto-linking React Native modules for target `ZealDev`: RNCAsyncStorage, RNCMaskedView, RNDateTimePicker, RNGestureHandler, RNPurchases, RNReanimated, RNSVG, RNScreens, RNSharedElement, lottie-react-native, react-native-get-random-values, react-native-netinfo, and react-native-safe-area-context
Analyzing dependencies
Fetching podspec for `DoubleConversion` from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`
Fetching podspec for `Folly` from `../node_modules/react-native/third-party-podspecs/Folly.podspec`
Fetching podspec for `glog` from `../node_modules/react-native/third-party-podspecs/glog.podspec`
Adding spec repo `trunk` with CDN `https://cdn.cocoapods.org/`
CocoaPods 1.11.2 is available.
To update use: `sudo gem install cocoapods`
For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.11.2
[!] Unable to find a specification for `expo-dev-menu-interface` depended upon by `expo-dev-launcher`
You have either:
* out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
* mistyped the name or version.
* not added the source repo that hosts the Podspec to your Podfile.
[stderr] [!] `<PBXResourcesBuildPhase UUID=`13B07F8E1A680F5B00A75B9A`>` attempted to initialize an object with an unknown UUID. `507824E46FD04BBBB3B40A90` for attribute: `files`. This can be the result of a merge and the unknown UUID is being discarded.
pod exited with non-zero code: 1
Android:
Stage: “Run gradlew”
The android log is massive and i can’t post in here but this is the last log.
[stderr] 18 errors
w: Detected multiple Kotlin daemon sessions at build/kotlin/sessions
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.8/userguide/command_line_interface.html#sec:command_line_warnings
732 actionable tasks: 732 executed
[stderr] FAILURE: Build failed with an exception.
[stderr] * What went wrong:
[stderr] Execution failed for task ':app:compileReleaseJavaWithJavac'.
[stderr] > Compilation failed; see the compiler error output for details.
[stderr] * Try:
[stderr] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[stderr] * Get more help at https://help.gradle.org
[stderr] BUILD FAILED in 10m 26s
Error: Gradle build failed with unknown error. Please see logs for the "Run gradlew" phase.
Any help would be grate, Thank you!