Integrate Fabric into RN tester
Summary: This diff integrates Fabric into RN Tester changelog: [internal] internal Reviewed By: JoshuaGross Differential Revision: D23012446 fbshipit-source-id: 7a8410b0d73c26c347db17f6ec43663bb22524e3
This commit is contained in:
Родитель
5115ac0bef
Коммит
8724a24bf5
|
@ -7,12 +7,15 @@
|
|||
|
||||
package com.facebook.react.uiapp;
|
||||
|
||||
import static com.facebook.react.uiapp.RNTesterApplication.IS_FABRIC_ENABLED;
|
||||
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.react.ReactActivity;
|
||||
import com.facebook.react.ReactActivityDelegate;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.ReactRootView;
|
||||
|
||||
public class RNTesterActivity extends ReactActivity {
|
||||
public static class RNTesterActivityDelegate extends ReactActivityDelegate {
|
||||
|
@ -25,6 +28,13 @@ public class RNTesterActivity extends ReactActivity {
|
|||
this.mActivity = activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReactRootView createRootView() {
|
||||
ReactRootView reactRootView = new ReactRootView(getContext());
|
||||
reactRootView.setIsFabric(IS_FABRIC_ENABLED);
|
||||
return reactRootView;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
// Get remote param before calling super which uses it
|
||||
|
|
|
@ -7,21 +7,39 @@
|
|||
|
||||
package com.facebook.react.uiapp;
|
||||
|
||||
import static com.facebook.react.uiapp.BuildConfig.FLAVOR;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.react.BuildConfig;
|
||||
import com.facebook.react.ReactApplication;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.ReactNativeHost;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.react.bridge.JSIModulePackage;
|
||||
import com.facebook.react.bridge.JSIModuleProvider;
|
||||
import com.facebook.react.bridge.JSIModuleSpec;
|
||||
import com.facebook.react.bridge.JSIModuleType;
|
||||
import com.facebook.react.bridge.JavaScriptContextHolder;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.UIManager;
|
||||
import com.facebook.react.fabric.ComponentFactory;
|
||||
import com.facebook.react.fabric.CoreComponentsRegistry;
|
||||
import com.facebook.react.fabric.FabricJSIModuleProvider;
|
||||
import com.facebook.react.fabric.ReactNativeConfig;
|
||||
import com.facebook.react.shell.MainReactPackage;
|
||||
import com.facebook.react.views.text.ReactFontManager;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class RNTesterApplication extends Application implements ReactApplication {
|
||||
|
||||
static final boolean IS_FABRIC_ENABLED = FLAVOR.contains("fabric");
|
||||
|
||||
private final ReactNativeHost mReactNativeHost =
|
||||
new ReactNativeHost(this) {
|
||||
@Override
|
||||
|
@ -43,6 +61,63 @@ public class RNTesterApplication extends Application implements ReactApplication
|
|||
public List<ReactPackage> getPackages() {
|
||||
return Arrays.<ReactPackage>asList(new MainReactPackage());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected JSIModulePackage getJSIModulePackage() {
|
||||
if (!IS_FABRIC_ENABLED) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new JSIModulePackage() {
|
||||
@Override
|
||||
public List<JSIModuleSpec> getJSIModules(
|
||||
final ReactApplicationContext reactApplicationContext,
|
||||
final JavaScriptContextHolder jsContext) {
|
||||
List<JSIModuleSpec> specs = new ArrayList<>();
|
||||
specs.add(
|
||||
new JSIModuleSpec() {
|
||||
@Override
|
||||
public JSIModuleType getJSIModuleType() {
|
||||
return JSIModuleType.UIManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSIModuleProvider<UIManager> getJSIModuleProvider() {
|
||||
ComponentFactory ComponentFactory = new ComponentFactory();
|
||||
CoreComponentsRegistry.register(ComponentFactory);
|
||||
return new FabricJSIModuleProvider(
|
||||
reactApplicationContext,
|
||||
ComponentFactory,
|
||||
// TODO: T71362667 add ReactNativeConfig's support in RNTester
|
||||
new ReactNativeConfig() {
|
||||
@Override
|
||||
public boolean getBool(String s) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInt64(String s) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getString(String s) {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDouble(String s) {
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return specs;
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
|
|
Загрузка…
Ссылка в новой задаче