標籤:ble config manager reac ssi red android 方法 cat
版本升級了,發現 老版本的 熱更新 用不了,原來是 底層代碼 改變了
private void onJSBundleLoadedFromServer(File file) { if (file == null || !file.exists()) { Toast.makeText(this, "no file", Toast.LENGTH_SHORT).show(); return; } // Toast.makeText(this, "Downloading complete", Toast.LENGTH_SHORT).show(); try { //JSCConfig.EMPTY.getConfigMap(); HybridData hb=new HybridData(); ReactApplication application = (ReactApplication) this; Class<?> RIManagerClazz = application.getReactNativeHost().getReactInstanceManager().getClass(); Method method = RIManagerClazz.getDeclaredMethod("recreateReactContextInBackground", JavaScriptExecutorFactory.class, JSBundleLoader.class); method.setAccessible(true); method.invoke(application.getReactNativeHost().getReactInstanceManager(), new JSCJavaScriptExecutorFactory(), JSBundleLoader.createFileLoader(file.getAbsolutePath())); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }
熱更新 思路就是 把 index.android.bundle 下載下來 ,然後擷取 路徑,傳入這個檔案路徑到這個函數裡面,然後會 調用
recreateReactContextInBackground 這個方法 重新綁定 bundle 檔案
react native 0.49 android版本熱更新