Skip to content

Commit f1d014a

Browse files
cortinicofacebook-github-bot
authored andcommitted
Simplify RNTester Autolinking (#53095)
Summary: Pull Request resolved: #53095 This change simplifies the RNTesterApplication so that it's looking closer to the template MainApplication file. In order to do so, I had to create 2 files inside the `metainternal/` folder as those files are generated as part of the CLI Autolinking Changelog: [Internal] [Changed] - Reviewed By: cipolleschi Differential Revision: D79722917 fbshipit-source-id: 06852c72ae1e1abed9952b1637515123977bc7b4
1 parent 7bfec89 commit f1d014a

1 file changed

Lines changed: 67 additions & 85 deletions

File tree

packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.kt

Lines changed: 67 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,25 @@ import android.app.Application
1313
import com.facebook.fbreact.specs.SampleLegacyModule
1414
import com.facebook.fbreact.specs.SampleTurboModule
1515
import com.facebook.react.BaseReactPackage
16+
import com.facebook.react.PackageList
1617
import com.facebook.react.ReactApplication
1718
import com.facebook.react.ReactHost
19+
import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
1820
import com.facebook.react.ReactNativeHost
1921
import com.facebook.react.ReactPackage
2022
import com.facebook.react.ViewManagerOnDemandReactPackage
2123
import com.facebook.react.bridge.NativeModule
2224
import com.facebook.react.bridge.ReactApplicationContext
2325
import com.facebook.react.common.assets.ReactFontManager
24-
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
2526
import com.facebook.react.defaults.DefaultReactHost
2627
import com.facebook.react.defaults.DefaultReactNativeHost
2728
import com.facebook.react.module.model.ReactModuleInfo
2829
import com.facebook.react.module.model.ReactModuleInfoProvider
29-
import com.facebook.react.popupmenu.PopupMenuPackage
30-
import com.facebook.react.shell.MainReactPackage
31-
import com.facebook.react.soloader.OpenSourceMergedSoMapping
3230
import com.facebook.react.uiapp.component.MyLegacyViewManager
3331
import com.facebook.react.uiapp.component.MyNativeViewManager
3432
import com.facebook.react.uiapp.component.ReportFullyDrawnViewManager
3533
import com.facebook.react.uimanager.ReactShadowNode
3634
import com.facebook.react.uimanager.ViewManager
37-
import com.facebook.react.views.view.setEdgeToEdgeFeatureFlagOn
38-
import com.facebook.soloader.SoLoader
3935

4036
internal class RNTesterApplication : Application(), ReactApplication {
4137
@Deprecated(
@@ -50,69 +46,70 @@ internal class RNTesterApplication : Application(), ReactApplication {
5046

5147
override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
5248

53-
public override fun getPackages(): List<ReactPackage> {
54-
return listOf(
55-
MainReactPackage(),
56-
PopupMenuPackage(),
57-
object : BaseReactPackage() {
58-
override fun getModule(
59-
name: String,
60-
reactContext: ReactApplicationContext
61-
): NativeModule? =
62-
when {
63-
SampleTurboModule.NAME == name -> SampleTurboModule(reactContext)
64-
SampleLegacyModule.NAME == name -> SampleLegacyModule(reactContext)
65-
else -> null
66-
}
67-
68-
// Note: Specialized annotation processor for @ReactModule isn't configured in OSS
69-
// yet. For now, hardcode this information, though it's not necessary for most
70-
// modules.
71-
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider =
72-
ReactModuleInfoProvider {
73-
mapOf(
74-
SampleTurboModule.NAME to
75-
ReactModuleInfo(
76-
SampleTurboModule.NAME,
77-
"SampleTurboModule",
78-
canOverrideExistingModule = false,
79-
needsEagerInit = false,
80-
isCxxModule = false,
81-
isTurboModule = true),
82-
SampleLegacyModule.NAME to
83-
ReactModuleInfo(
84-
SampleLegacyModule.NAME,
85-
"SampleLegacyModule",
86-
canOverrideExistingModule = false,
87-
needsEagerInit = false,
88-
isCxxModule = false,
89-
isTurboModule = false))
90-
}
91-
},
92-
object : ReactPackage, ViewManagerOnDemandReactPackage {
93-
override fun getViewManagerNames(reactContext: ReactApplicationContext) =
94-
listOf("RNTMyNativeView", "RNTMyLegacyNativeView", "RNTReportFullyDrawnView")
95-
96-
override fun createViewManagers(
97-
reactContext: ReactApplicationContext
98-
): List<ViewManager<*, *>> =
99-
listOf(
100-
MyNativeViewManager(),
101-
MyLegacyViewManager(reactContext),
102-
ReportFullyDrawnViewManager())
103-
104-
override fun createViewManager(
105-
reactContext: ReactApplicationContext,
106-
viewManagerName: String
107-
): ViewManager<*, out ReactShadowNode<*>>? =
108-
when (viewManagerName) {
109-
"RNTMyNativeView" -> MyNativeViewManager()
110-
"RNTMyLegacyNativeView" -> MyLegacyViewManager(reactContext)
111-
"RNTReportFullyDrawnView" -> ReportFullyDrawnViewManager()
112-
else -> null
113-
}
114-
})
115-
}
49+
public override fun getPackages(): List<ReactPackage> =
50+
PackageList(this).packages.apply {
51+
add(
52+
object : BaseReactPackage() {
53+
override fun getModule(
54+
name: String,
55+
reactContext: ReactApplicationContext
56+
): NativeModule? =
57+
when {
58+
SampleTurboModule.NAME == name -> SampleTurboModule(reactContext)
59+
SampleLegacyModule.NAME == name -> SampleLegacyModule(reactContext)
60+
else -> null
61+
}
62+
63+
// Note: Specialized annotation processor for @ReactModule isn't configured in
64+
// OSS yet. For now, hardcode this information, though it's not necessary for
65+
// most modules.
66+
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider =
67+
ReactModuleInfoProvider {
68+
mapOf(
69+
SampleTurboModule.NAME to
70+
ReactModuleInfo(
71+
SampleTurboModule.NAME,
72+
"SampleTurboModule",
73+
canOverrideExistingModule = false,
74+
needsEagerInit = false,
75+
isCxxModule = false,
76+
isTurboModule = true),
77+
SampleLegacyModule.NAME to
78+
ReactModuleInfo(
79+
SampleLegacyModule.NAME,
80+
"SampleLegacyModule",
81+
canOverrideExistingModule = false,
82+
needsEagerInit = false,
83+
isCxxModule = false,
84+
isTurboModule = false))
85+
}
86+
})
87+
add(
88+
object : ReactPackage, ViewManagerOnDemandReactPackage {
89+
override fun getViewManagerNames(reactContext: ReactApplicationContext) =
90+
listOf(
91+
"RNTMyNativeView", "RNTMyLegacyNativeView", "RNTReportFullyDrawnView")
92+
93+
override fun createViewManagers(
94+
reactContext: ReactApplicationContext
95+
): List<ViewManager<*, *>> =
96+
listOf(
97+
MyNativeViewManager(),
98+
MyLegacyViewManager(reactContext),
99+
ReportFullyDrawnViewManager())
100+
101+
override fun createViewManager(
102+
reactContext: ReactApplicationContext,
103+
viewManagerName: String
104+
): ViewManager<*, out ReactShadowNode<*>>? =
105+
when (viewManagerName) {
106+
"RNTMyNativeView" -> MyNativeViewManager()
107+
"RNTMyLegacyNativeView" -> MyLegacyViewManager(reactContext)
108+
"RNTReportFullyDrawnView" -> ReportFullyDrawnViewManager()
109+
else -> null
110+
}
111+
})
112+
}
116113

117114
override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
118115
}
@@ -124,21 +121,6 @@ internal class RNTesterApplication : Application(), ReactApplication {
124121
override fun onCreate() {
125122
ReactFontManager.getInstance().addCustomFont(this, "Rubik", R.font.rubik)
126123
super.onCreate()
127-
128-
if (BuildConfig.IS_INTERNAL_BUILD) {
129-
// For Buck we call the simple init() as the SoMapping is built-from-source inside SoLoader
130-
SoLoader.init(this, false)
131-
} else {
132-
// For Gradle instead, we need to specify it as constructor parameter.
133-
SoLoader.init(this, OpenSourceMergedSoMapping)
134-
}
135-
136-
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
137-
load()
138-
}
139-
140-
if (BuildConfig.IS_EDGE_TO_EDGE_ENABLED) {
141-
setEdgeToEdgeFeatureFlagOn()
142-
}
124+
loadReactNative(this)
143125
}
144126
}

0 commit comments

Comments
 (0)