Skip to content

Commit d8c9638

Browse files
authored
Fix auto link for RN72 on Android (#7758)
Closes #7748
1 parent 06ff96d commit d8c9638

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

autolink/postlink/applicationLinker.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ class ApplicationLinker {
9898
}
9999

100100
_extendNavigationHost(applicationContent) {
101+
if (this._hasAlreadyLinkedNavigationHost(applicationContent)) {
102+
warnn(' NavigationReactNativeHost is already used, skipping.');
103+
return applicationContent;
104+
}
105+
101106
if (this._doesExtendReactNativeHost(applicationContent)) {
102107
debugn(' Changing host implementation to NavigationReactNativeHost');
103108
return applicationContent
@@ -106,11 +111,14 @@ class ApplicationLinker {
106111
'import com.facebook.react.ReactNativeHost;',
107112
'import com.facebook.react.ReactNativeHost;\nimport com.reactnativenavigation.react.NavigationReactNativeHost;'
108113
);
109-
}
110-
111-
if (this._hasAlreadyLinkedNavigationHost(applicationContent)) {
112-
warnn(' NavigationReactNativeHost is already used, skipping.');
113-
return applicationContent;
114+
} else if (this._doesExtendDefaultReactNativeHost(applicationContent)) {
115+
debugn(' Changing host implementation to NavigationReactNativeHost');
116+
return applicationContent
117+
.replace('new DefaultReactNativeHost(this)', 'new NavigationReactNativeHost(this)')
118+
.replace(
119+
'import com.facebook.react.defaults.DefaultReactNativeHost;',
120+
'import com.facebook.react.defaults.DefaultReactNativeHost;\nimport com.reactnativenavigation.react.NavigationReactNativeHost;'
121+
);
114122
}
115123

116124
throw new Error('There was a problem extending NavigationReactNativeHost().');
@@ -120,6 +128,10 @@ class ApplicationLinker {
120128
return /\s*new ReactNativeHost\(this\)\s*/.test(applicationContent);
121129
}
122130

131+
_doesExtendDefaultReactNativeHost(applicationContent) {
132+
return /\s*new DefaultReactNativeHost\(this\)\s*/.test(applicationContent);
133+
}
134+
123135
_hasAlreadyLinkedNavigationHost(applicationContent) {
124136
return /\s*new NavigationReactNativeHost\(this\)\s*/.test(applicationContent);
125137
}

autolink/postlink/gradleLinker.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var path = require('./path');
33
var fs = require('fs');
44
var { warnn, errorn, logn, infon, debugn } = require('./log');
55
var { insertString } = require('./stringUtils');
6-
var DEFAULT_KOTLIN_VERSION = '1.5.31';
6+
var DEFAULT_KOTLIN_VERSION = '1.7.10';
77
// This should be the minSdkVersion required for RNN.
88
var DEFAULT_MIN_SDK_VERSION = 21;
99

@@ -74,7 +74,7 @@ class GradleLinker {
7474
return contents;
7575
}
7676

77-
var match = /classpath\s*\(*["']com\.android\.tools\.build:gradle:/.exec(contents);
77+
var match = /classpath\s*\(*["']com\.android\.tools\.build:gradle.*/.exec(contents);
7878
if (match) {
7979
debugn(' Adding Kotlin plugin');
8080
return insertString(

0 commit comments

Comments
 (0)