Release channels on detached ExpoKit app

Hi,

Does anyone know how to handle release channels for detached ExpoKit app?

As detached apps are built locally, we don’t run the command “exp build:android --release-channel ”

I suspect this is doable with detached apps and it’s probably just documentation is missing, so if anyone can confirm I would be interested to know :slight_smile:

It seems like the answer is to update the urls here:

ios//Supporting/EXShell.plist
android/app/src/main/java/com/app/MainActivity#publishedUrl

exp://exp.host/@slorber/app?release-channel=prod

Didn’t test yet but it should probably do the job

Hey @slorber! Sorry for the lack of documentation, we’ll work on updating them for detached projects.

For an ios app, you are correct that you need to update EXShell.plist. You’d want to update the releaseChannel field, by adding something like this to the dict:

<key>releaseChannel</key> <string>foobar</string>

In the android version, you’d want to update the release channel variable here in android/expoview/src/main/java/host/exp/exponent/Constants.java https://github.com/expo/expo/blob/master/android/expoview/src/main/java/host/exp/exponent/Constants.java#L31

How does one deal with separate configuration variables per release channel? Usually a production app is going to point at a different server to the staging version.

Does something like Expo.Constants.manifest.releaseChannel exist? Then I could use that to reference a channel-specific configuration file.

Would also be good if there was an easy way to change the bundle identifier per release channel.

I.e. I want to be able to install the production and staging versions of the app side-by-side. I think that too would be a manual change for an ejected app currently

I believe @quinlanj is currently working on allowing environment variables to be changed per-release-channel, but we haven’t launched that feature yet.

1 Like

@quinlanj sorry to ask again but the file you mention “android/expoview/src/main/java/host/exp/exponent/Constants.java” is not part of my project, it’s probably in an aar file or something.

Are you sure I’m not supposed to update android/app/src/main/java/com/app/MainActivity#publishedUrl instead?

Can you give a more detailed example? Is it correct I should use queryString for android and dict attribute for ios? why not query string in both cases?

Also wondering, should we version control these “EXBuildConstants” files containing the development packager url?

It seems the port is changing regularly from 19000 to 80, don’t exactly know why

@quinlanj @slorber Is there any more info on this? I’m a new dev and don’t quite understand how to solve this. I’ve updated manifestUrl to exp://10.0.1.7:19000 but it’s still not working.

I also don’t understand where the url:
exp://exp.host/@slorber/app... comes from.
before ejecting my app was served on the url above. sorry about my ignorance here, this seems super simple but I don’t get it :slight_smile: (I do understand that exp://exp.host/@slorber/app... is slorber’s local server I just don’t understand why mine doesn’t have the same specificity)

in EXBuildConstants.plist I have : <key>developmentUrl</key> <string>exp0b00f4d005204a5eb5e59b746431f6d5://localhost:80</string>
it seems to get reset automatically .
thanks

I solved my issue by running exp start and grabbing the url there and using that in EXShell.plist > manifestUrl value. I’m ignorant as to why the url in the XDE is different or where either of them are coming from :slight_smile:

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.