Comments (7)
Hi @dennisvk001 ,
I'll investigate the issue and work to solve the problem as soon as possible.
from react-native-ultimate-config.
Are there any updates here that have the same issue with RN 0.71.11 (new architecture included)?
from react-native-ultimate-config.
Am facing the same issue with rn 72 (new architecture enabled)
from react-native-ultimate-config.
I am facing the same issue with 72 and the new architecture enabled.
from react-native-ultimate-config.
This seems to relate to Codegen process, but I could be wrong.
from react-native-ultimate-config.
Still happens with RN 73 and new architecture enabled.
"react-native-ultimate-config": "6.0.1"
from react-native-ultimate-config.
The Codegen part was missing. I did some quick exercise to add it.
I had to add the codegen section to package.json
, add a minimal spec and change the source file from m
to mm
.
Here is the patch made with yarn patch ..
which made it possible to compile the app. No warranty though, I'm touching these kind of new arch things for the first time:
diff --git a/ios/UltimateConfig.h b/ios/UltimateConfig.h
index 41ad9efb55a3fd96986a49ef9e369e5b6271e328..2c3004d99238d8a3c2dbcebdc63838cd068af46f 100644
--- a/ios/UltimateConfig.h
+++ b/ios/UltimateConfig.h
@@ -1,6 +1,6 @@
#ifdef RCT_NEW_ARCH_ENABLED
-#import "RNUltimateConfigSpec.h"
+#import "RNUltimateConfig/RNUltimateConfig.h"
@interface UltimateConfig : NSObject <NativeUltimateConfigSpec>
#else
diff --git a/ios/UltimateConfig.m b/ios/UltimateConfig.m
deleted file mode 100644
index 7debfdff0402385a71111c72517799ec25128e8d..0000000000000000000000000000000000000000
--- a/ios/UltimateConfig.m
+++ /dev/null
@@ -1,26 +0,0 @@
-#import "UltimateConfig.h"
-#import "ConfigValues.h"
-
-@implementation UltimateConfig
-RCT_EXPORT_MODULE()
-
-+ (BOOL)requiresMainQueueSetup
-{
- return YES;
-}
-
-- (NSDictionary *)constantsToExport
-{
- return getValues();
-}
-
-// Don't compile this code when we build for the old architecture.
-#ifdef RCT_NEW_ARCH_ENABLED
-- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
- (const facebook::react::ObjCTurboModule::InitParams &)params
-{
- return std::make_shared<facebook::react::NativeUltimateConfigSpecJSI>(params);
-}
-#endif
-
-@end
diff --git a/ios/UltimateConfig.mm b/ios/UltimateConfig.mm
new file mode 100644
index 0000000000000000000000000000000000000000..7debfdff0402385a71111c72517799ec25128e8d
--- /dev/null
+++ b/ios/UltimateConfig.mm
@@ -0,0 +1,26 @@
+#import "UltimateConfig.h"
+#import "ConfigValues.h"
+
+@implementation UltimateConfig
+RCT_EXPORT_MODULE()
+
++ (BOOL)requiresMainQueueSetup
+{
+ return YES;
+}
+
+- (NSDictionary *)constantsToExport
+{
+ return getValues();
+}
+
+// Don't compile this code when we build for the old architecture.
+#ifdef RCT_NEW_ARCH_ENABLED
+- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
+ (const facebook::react::ObjCTurboModule::InitParams &)params
+{
+ return std::make_shared<facebook::react::NativeUltimateConfigSpecJSI>(params);
+}
+#endif
+
+@end
diff --git a/ios/UltimateConfig.xcodeproj/project.pbxproj b/ios/UltimateConfig.xcodeproj/project.pbxproj
index 9ec0fd89049bbcf2c75ca18cd7b489a06048ea11..ad1fec12fbc7d2d9020e98f9658ed9dd3df5fc80 100644
--- a/ios/UltimateConfig.xcodeproj/project.pbxproj
+++ b/ios/UltimateConfig.xcodeproj/project.pbxproj
@@ -7,7 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
- 5E555C0D2413F4C50049A1A2 /* UltimateConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* UltimateConfig.m */; };
+ 5E555C0D2413F4C50049A1A2 /* UltimateConfig.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* UltimateConfig.mm */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -25,7 +25,7 @@
/* Begin PBXFileReference section */
134814201AA4EA6300B7C361 /* libUltimateConfig.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libUltimateConfig.a; sourceTree = BUILT_PRODUCTS_DIR; };
B3E7B5881CC2AC0600A0062D /* UltimateConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UltimateConfig.h; sourceTree = "<group>"; };
- B3E7B5891CC2AC0600A0062D /* UltimateConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UltimateConfig.m; sourceTree = "<group>"; };
+ B3E7B5891CC2AC0600A0062D /* UltimateConfig.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UltimateConfig.mm; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -51,7 +51,7 @@
isa = PBXGroup;
children = (
B3E7B5881CC2AC0600A0062D /* UltimateConfig.h */,
- B3E7B5891CC2AC0600A0062D /* UltimateConfig.m */,
+ B3E7B5891CC2AC0600A0062D /* UltimateConfig.mm */,
134814211AA4EA7D00B7C361 /* Products */,
);
sourceTree = "<group>";
@@ -113,7 +113,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- B3E7B58A1CC2AC0600A0062D /* UltimateConfig.m in Sources */,
+ B3E7B58A1CC2AC0600A0062D /* UltimateConfig.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/package.json b/package.json
index 6d116ba0f8e34c1671a75ef86df2627e46485892..2b03a617ba86f5caa128e0c96f1a4b5002ec2113 100644
--- a/package.json
+++ b/package.json
@@ -72,5 +72,13 @@
"resolutions": {
"logkitty": "^0.7.1",
"lodash": "^4.17.19"
+ },
+ "codegenConfig": {
+ "android": {
+ "javaPackageName": "com.reactnativeultimateconfig"
+ },
+ "name": "RNUltimateConfig",
+ "type": "all",
+ "jsSrcsDir": "./src/specs"
}
}
diff --git a/src/specs/NativeUltimateConfig.js b/src/specs/NativeUltimateConfig.js
new file mode 100644
index 0000000000000000000000000000000000000000..15a3f85e9f77ed67c209272e140b8e71d04e0fa3
--- /dev/null
+++ b/src/specs/NativeUltimateConfig.js
@@ -0,0 +1,10 @@
+// @flow
+import type {TurboModule} from 'react-native/Libraries/TurboModule/RCTExport';
+import {TurboModuleRegistry} from 'react-native';
+
+export interface Spec extends TurboModule {
+ getConstants: () => {||}
+}
+export default (TurboModuleRegistry.get<Spec>(
+ 'RNUltimateConfig'
+): ?Spec);
\ No newline at end of file
But using of new architecture for such a simple native code is very questionable, imo. 🤔 Even with the new bridgeless mode of RN there is some emulation of old module system and for such a simple module which just returns constants there is no benefit of using JSI or having a delayed initialization of the module itself. I'd just remove the new arch things, if the package still compiles when the app has the new architecture enabled and the bridgeless mode turned on.
from react-native-ultimate-config.
Related Issues (20)
- Warning on build: ios/rnuc.xcconfig: line 1: //: is a directory HOT 4
- is it possible to keep env based package name in proguard-rules.pro? HOT 2
- Build Failure - RN 0.69.1 HOT 30
- Android JCenter - build failure HOT 3
- expo 47 compatible ? HOT 2
- RN issue: Cannot choose between the following variants of com.facebook.react:react-native HOT 4
- Cannot choose between the following variants of com.facebook.react:react-native:0.70.6: HOT 2
- Error React Native IOS Undefined symbol: _RCTRegisterModule HOT 1
- Doc/Quickstart (minor): `npm bin` deprecated in Node 18.14 HOT 1
- Gradle 8 support HOT 4
- Could not set unknown property 'classifier' for task
- Packaging error
- Multiple env files possible? HOT 1
- Kotlin support
- '$' is not recognized as internal or external command HOT 1
- Error: Cannot resolve ./override HOT 8
- Does this package support use_frameworks! :linkage => :static ? HOT 1
- Firebase Initialization Issue with react-native-ultimate-config in NX Monorepo
- Update build.gradle instructions for later versions of react-native HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-native-ultimate-config.