4 votes

Charger ReactNativeHost pour Android avec un paquet à partir d'un hôte distant

J'ai pré-compilé mon bundle react-native et l'ai téléchargé sur mon serveur (fausse url) :

http://my-bundle-server.com/index.Android.bundle.js

Pour iOS, je peux simplement créer une vue en utilisant cet emplacement et cela fonctionne très bien :

 jsCodeLocation = "http://my-bundle-server.com/index.android.bundle.js";
 RCTRootView *rootView = [[RCTRootView alloc]
     initWithBundleURL:jsCodeLocation                                                      
     moduleName:@"MyCoolComponent"
     initialProperties:nil                                                  
     launchOptions:launchOptions];

Avec Android, c'est une autre histoire, je n'ai pas trouvé de moyen de définir ce chemin pour un bundle distant. J'ai trouvé la documentation de l'outil ReactNativeHost et a essayé de régler le getJSBundleFile mais cela me donne "Impossible de charger le fichier". http://....js ' :

https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java

Renvoie un chemin personnalisé du fichier de regroupement. Ceci est utilisé dans les cas où le doit être chargé à partir d'un chemin personnalisé. Par défaut, il est chargé à partir des actifs Android, à partir d'un chemin spécifié par {@link getBundleAssetName}. ex. "file://sdcard/myapp_cache/index.Android.bundle"

Il semble que cela ne fonctionne pas avec les sites distants. Il convient de mentionner que je crée mon hôte dans l'application afin de pouvoir le réutiliser dans différents fragments de mon application.

Comment puis-je définir l'emplacement du bundle pré-compilé à charger pour une application Android ?

3voto

jay shah Points 126

L'implémentation par défaut semble utiliser l'implémentation du système de fichiers :

https://github.com/facebook/react-native/blob/4466b6fa7ce5325cac3233a23b10ffcb4ff038a7/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java#L93

Mais il semble qu'il y ait une possibilité d'exposer un bundler qui pourrait charger une url distante ici (sinon, comment l'url du serveur de développement pourrait-elle charger le bundle depuis l'hôte local ?)

https://github.com/facebook/react-native/blob/4466b6fa7ce5325cac3233a23b10ffcb4ff038a7/ReactAndroid/src/main/java/com/facebook/react/bridge/JSBundleLoader.java#L65

avec l'api externe pour définir un bundleloader personnalisé ici :

https://github.com/facebook/react-native/blob/4466b6fa7ce5325cac3233a23b10ffcb4ff038a7/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java#L112

P.S. Je n'ai pas essayé tout ce qui précède, mais cela semble faisable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X