当我尝试从XCode
中的Release mode
构建我的React Native App时,要检查它,然后再将其投入生产,这会卡在旧代码中。不管我在JS文件中做了什么更改,它都不会做。在“调试”模式下,它不会发生,只是可以正常工作。
示例:
我更改了任何JS文件中的标签(如某些菜单的标题),并且当我使用react-native run-ios
或在方案“ Debug”中使用了XCode的“播放”按钮时,该标签将起作用检查。如果相反,我选中“发布”,它将收取我什至不知道的旧版本应用程序的费用,当然哪个版本是不知道的。
我曾尝试投产,但仍然是旧版本。
因此,由于我所做的任何更改,现在我每天都无法上传新版本,发布模式会忽略它。
我尝试生成一个新的main.jsbundle
,我已经清理了Shift + CMD + K
的版本,并且也没有解决方案重新安装了npm
。
你有什么主意吗?
编辑:
文件“ AppDelegate.m”与它有关系吗?
这是我的AppDelegate:
#import "AppDelegate.h"
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"BottomNavigation"
initialProperties:nil];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
return YES;
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
@end
答案 0 :(得分:0)
我在这里发布: https://stackoverflow.com/a/59029751/8898886
最后我找到了解决方法。
问题是我生成的main.jsbundle放置在错误的位置,该位置同时具有2个main.jsbundle(旧的和损坏的,正确的)。
我在/ ios / ProjectName之外有正确的一个,而在那儿则有旧的。我只需要应用此代码段即可生成一个全新的main.jsbundle
:
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios/assets
,然后获取文件main.jsbundle和资产文件夹,并将它们放在/ ios / ProjectName内
非常感谢您的帮助。