-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for React Native AutoLinking #2613
Conversation
@microsoft-github-policy-service agree |
Hi @ricku44, thanks for contribution! I see no docs changes in your PR. Does this mean your changes do not affect existing setups? As far as I can see, it requires at least some modifications to make use of your changes. |
Hello @velimir-jankovic, Before updating the documentation, I'd like to request a review of these changes. I've noticed the addition of setup files in the android\app folder, this seems to increase the integration steps. React Native typically uses the android folder directly for autolinking. I have no idea why this was done and just want to ensure that these changes doesn't disrupt any existing workflows. I've only tested these changes with CRA templates. |
Hello @ricku44 , Thank you for your contribution! I have reviewed your pull request and tested it on the Android platform. During the build process, I encountered the following error:
Could you please investigate this issue? Additionally, I am curious about the rationale behind moving the code from the 'app' folder. Could you provide some insights into this decision? Thanks again for your efforts! |
Closing as stale. |
Description
This PR aims at reducing native CodePush installation steps:
Plugin Installation and Configuration for React Native 0.60 version and above (Android)
Step 1
android/settings.gradle
file, make the following additions at the end of the file:Step 2
android/app/build.gradle
file, add thecodepush.gradle
file as an additional build task definition to the end of the file:Step 3 [Required]
MainApplication.java
file to use CodePush via the following changes:Step 4
Add the Deployment key to
strings.xml
:To let the CodePush runtime know which deployment it should query for updates, open your app's
strings.xml
file and add a new string namedCodePushDeploymentKey
, whose value is the key of the deployment you want to configure this app against (like the key for theStaging
deployment for theFooBar
app). You can retrieve this value by runningappcenter codepush deployment list -a <ownerName>/<appName> -k
in the CodePush CLI (the-k
flag is necessary since keys aren't displayed by default) and copying the value of theKey
column which corresponds to the deployment you want to use (see below). Note that using the deployment's name (like Staging) will not work. The "friendly name" is intended only for authenticated management usage from the CLI, and not for public consumption within your app.In order to effectively make use of the
Staging
andProduction
deployments that were created along with your CodePush app, refer to the multi-deployment testing docs below before actually moving your app's usage of CodePush into production.Your
strings.xml
should looks like this:Step 5 [JS side]
Note: If you need to dynamically use a different deployment, you can also override your deployment key in JS code using Code-Push options
Plugin Installation and Configuration for React Native 0.60 version and above (iOS)
Step 1 - 4 [Required]
Run
cd ios && pod install && cd ..
to install all the necessary CocoaPods dependencies.Open up the
AppDelegate.m`
file, and add an import statement for the CodePush headers:Find the following line of code, which sets the source URL for bridge for production releases:
Replace it with this line:
This change configures your app to always load the most recent version of your app's JS bundle. On the first launch, this will correspond to the file that was compiled with the app. However, after an update has been pushed via CodePush, this will return the location of the most recently installed update.
NOTE: The
bundleURL
method assumes your app's JS bundle is namedmain.jsbundle
. If you have configured your app to use a different file name, simply call thebundleURLForResource:
method (which assumes you're using the.jsbundle
extension) orbundleURLForResource:withExtension:
method instead, in order to overwrite that default behaviorTypically, you're only going to want to use CodePush to resolve your JS bundle location within release builds, and therefore, we recommend using the
DEBUG
pre-processor macro to dynamically switch between using the packager server and CodePush, depending on whether you are debugging or not. This will make it much simpler to ensure you get the right behavior you want in production, while still being able to use the Chrome Dev Tools, live reload, etc. at debug-time.Your
sourceURLForBridge
method should look like this:Step 5
Add the Deployment key to
Info.plist
:To let the CodePush runtime know which deployment it should query for updates against, open your app's
Info.plist
file and add a new entry namedCodePushDeploymentKey
, whose value is the key of the deployment you want to configure this app against (like the key for theStaging
deployment for theFooBar
app). You can retrieve this value by runningappcenter codepush deployment list -a <ownerName>/<appName> -k
in the AppCenter CLI (the-k
flag is necessary since keys aren't displayed by default) and copying the value of theKey
column which corresponds to the deployment you want to use (see below). Note that using the deployment's name (like Staging) will not work. That "friendly name" is intended only for authenticated management usage from the CLI, and not for public consumption within your app.In order to effectively make use of the
Staging
andProduction
deployments that were created along with your CodePush app, refer to the multi-deployment testing docs below before actually moving your app's usage of CodePush into production.Step 6 [JS side]
As per the note, we can set CodePush Deployment Keys using codePushOptions from React Native's side.
Note: If you need to dynamically use a different deployment, you can also override your deployment key in JS code using Code-Push options
Changes Made
mv -f android/app/* android/
In
android/build.gradle
file, add thecodepush.gradle
file as an additional build task definition to the end of the file:Resource String for seamless compilation:
Testing
Add
CodePush.getJSBundleFile()
and[CodePush bundleURL]
.