Detached to expokit. How to Build?

Note: If you choose to detach to ExpoKit, some Expo services are no longer available. For example, we can’t generate standalone builds for you any more. You’ll need to manage the native builds yourself.

As per expo docs. I have detached to expokit using CRNA eject command as i had to use a native module. Does we can’t generate standalone builds for you any more means i cannot use exp build:android command anymore? If so then how will i publish my JS bundle in order for my generated apk to access?

Once you detach, you will have to build your project in Xcode or AS. If you’re building to debug your project, make sure your JS bundle is being served either via the exp CLI or XDE. If you are having an issue with Xcode not fetching your bundle, double check in the ExShell.plist file (Can be found in the Supporting folder under your project) for the developmentURL key and make sure the value matches the URL being served. For Android, you can check the development URL in the ExponentBuildConstants file which can be found following the android/app/src/main/java/your-project-name/generated path in your project. If you are building for release, just publish your JS and the release build will fetch from your production URL.

1 Like

One can build a detached app with ExpoKit from the command line using the following command:

gradle assembleRelease

this creates the apk files under android/app/builds/…

(see for some ideas about gradle: https://developer.android.com/studio/build/building-cmdline.html)

the above created apk files are still unsigned, and need to be signed in order to make them installable on a device

signing unsigned apks is described in details here: https://developer.android.com/studio/publish/app-signing.html#sign-manually

3 Likes

If you are building for release, just publish your JS and the release build will fetch from your production URL.

I have a problem in this point exactly.

My problem is: I want to generate an APK with everything and publish it to the store, but every time I do, the changes are not released if I don’t explicitly run expo publish.

For some reason then, it looks like that my workflow of opening Android Studio, generating a Signed Build and manually publishing the build to GooglePlay is not enough to release the changes… I still have to run expo publish, and I don’t necessarily want to publish that way.

Am I missing something?

just because I have a similar problem: note that by running expo publish it will also trigger an OTA for all of your installations unless you use a custom release channel for each app build.

I added the following to the scripts section in package.json:

"release": "expo publish --release-channel $(date '+prod-%Y-%m-%dt%H-%M-%S')"

this way I can run yarn release and then build it in android studio / xcode without updating any other app

1 Like