-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathRNBridgeManager.kt
More file actions
66 lines (53 loc) · 2.35 KB
/
RNBridgeManager.kt
File metadata and controls
66 lines (53 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package com.callstack.react
import android.app.Application
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.react.soloader.OpenSourceMergedSoMapping
import com.facebook.soloader.SoLoader
import com.callstack.react.BuildConfig
class RNBridgeManager {
companion object {
val shared: RNBridgeManager by lazy { RNBridgeManager() }
private var reactNativeHost: ReactNativeHost? = null
private var reactHost: ReactHost? = null
}
fun getReactNativeHost(): ReactNativeHost? {
return reactNativeHost
}
fun getReactHost(): ReactHost? {
return reactHost
}
fun initializeReactApp(application: Application) {
if (reactNativeHost != null || reactHost != null) {
return
}
SoLoader.init(application, OpenSourceMergedSoMapping)
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
// If you opted-in for the New Architecture, we load the native entry point for this app.
load()
}
val reactApp = object : ReactApplication {
override val reactNativeHost: ReactNativeHost =
object : DefaultReactNativeHost(application) {
override fun getPackages(): MutableList<ReactPackage> {
return PackageList(application).packages
}
override fun getJSMainModuleName(): String = "index"
override fun getBundleAssetName(): String = "index.android.bundle"
override fun getUseDeveloperSupport() = BuildConfig.DEBUG
override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
}
override val reactHost: ReactHost
get() = getDefaultReactHost(application, reactNativeHost)
}
reactNativeHost = reactApp.reactNativeHost
reactHost = reactApp.reactHost
}
}