NativeScript / NativeScript/ios

NS runtime crashes in iOS18 Simulators

Ouverte
#262 2 commentaires 3 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
JavaScript
Étoiles
150
Forks
43
Merge moyen
3 j 10 h
PR mergées (30 j)
22

Description

Hello together,
I am currently trying to migrate my app from NS 8.7 to 8.8. It seems like NS has an issue on simulators running iOS18. The relevant code block which kills the runtime is the following, hence opening an SFSafariViewController breaks the app. The crash log is attached below,

crashiOS18SimOniPhone15Pro.txt

seems like it is a V8 related issue.

private openUrlWithParametersCompletion(fullUrl: string, frame: Frame): void {
		SFSafariViewController.prewarmConnectionsToURLs([NSURL.URLWithString(fullUrl)]);
		this.safariViewController = SFSafariViewController.alloc().initWithURL(NSURL.URLWithString(fullUrl));

		// color of top and bottom bar
		if (this.styleOptions) {
			this.safariViewController.preferredBarTintColor = this.styleOptions.preferredBarTintColor.ios;
		}
		// color of the buttons
		if (this.styleOptions) {
			this.safariViewController.preferredControlTintColor = this.styleOptions.preferredControlTintColor.ios;
		}
		// text for dismiss button can be Done, Close, Cancel
		this.safariViewController.dismissButtonStyle = SFSafariViewControllerDismissButtonStyle.Done;
		this.safariViewController.delegate = this;
		if (!this._timeout) {
			this._timeout = setTimeout(() => {
				const windowScene = UIApplication.sharedApplication.connectedScenes.allObjects.firstObject as UIWindowScene;
				if (windowScene) {
					const keyWindow = windowScene.windows.firstObject as UIWindow;
					if (keyWindow.keyWindow) {
						let rootVC = keyWindow.rootViewController;
						rootVC.presentViewControllerAnimatedCompletion(this.safariViewController, true, null);
					} else {
						console.error('no key window');
					}
				}
				this._timeout = null;
			}, 150);
		}
	}
OS: macOS 15.0
CPU: (10) arm64 Apple M1 Pro
Shell: /bin/zsh
node: 20.11.1
npm: 10.2.4
nativescript: 8.8.2

# android
java: 17.0.12
ndk: Not Found
apis: Not Found
build_tools: Not Found
system_images: Not Found

# ios
xcode: 16.0/16A242d
cocoapods: 1.15.2
python: 3.12.4
python3: 3.12.4
ruby: 2.7.8
platforms: 
  - DriverKit 24.0
  - iOS 18.0
  - macOS 15.0
  - tvOS 18.0
  - visionOS 2.0
  - watchOS 11.0
Dependencies
"dependencies": {
  "@angular/animations": "18.2.5",
  "@angular/common": "18.2.5",
  "@angular/compiler": "18.2.5",
  "@angular/core": "18.2.5",
  "@angular/forms": "18.2.5",
  "@angular/platform-browser": "18.2.5",
  "@angular/platform-browser-dynamic": "18.2.5",
  "@angular/router": "18.2.5",
  "@apollo/client": "3.11.8",
  "@mnd/external-web-view": "file:../app-plugins/dist/packages/external-web-view/mnd-external-web-view-2.0.0.tgz",
  "@nativescript/angular": "18.1.3",
  "@nativescript/core": "8.8.2",
  "@nativescript/iqkeyboardmanager": "2.1.1",
  "@nativescript/localize": "5.2.0",
  "@nativescript/mlkit-barcode-scanning": "2.1.0",
  "@nativescript/mlkit-core": "2.1.0",
  "@nativescript/secure-storage": "3.0.3",
  "@nativescript/theme": "3.1.0",
  "@nativescript/ui-charts": "0.2.4",
  "apollo-angular": "7.2.0",
  "apollo3-cache-persist": "0.15.0",
  "d3-ease": "3.0.1",
  "graphql": "16.9.0",
  "graphql-tag": "2.12.6",
  "intl": "1.2.5",
  "moment": "2.30.1",
  "nativescript-health-data": "file:../app-plugins-customized/nativescript-health-data/publish/package/nativescript-health-data-3.0.0.tgz",
  "nativescript-oauth2-ext": "file:../app-plugins-customized/nativescript-oauth2-ext/publish/package/nativescript-oauth2-ext-3.0.4.tgz",
  "nativescript-sqlite": "2.8.6",
  "nativescript-sqlite-commercial": "file:../app-plugins-customized/commercial-sqlite/nativescript-sqlite-commercial-1.8.0.tgz",
  "nativescript-ui-calendar": "15.2.3",
  "nativescript-ui-gauge": "15.2.3",
  "qs": "npm:querystring@0.2.1",
  "rxjs": "7.8.1",
  "util": "0.12.5",
  "uuidjs": "5.1.0",
  "zone.js": "0.15.0"
},
"devDependencies": {
  "@angular-devkit/build-angular": "18.2.5",
  "@angular/compiler-cli": "18.2.5",
  "@graphql-codegen/cli": "5.0.2",
  "@graphql-codegen/fragment-matcher": "5.0.2",
  "@graphql-codegen/introspection": "4.0.3",
  "@graphql-codegen/typescript": "4.0.9",
  "@graphql-codegen/typescript-apollo-angular": "4.0.0",
  "@graphql-codegen/typescript-operations": "4.2.3",
  "@nativescript/android": "8.7.0",
  "@nativescript/ios": "8.8.2",
  "@nativescript/types": "8.8.0",
  "@nativescript/webpack": "5.0.22",
  "@ngtools/webpack": "18.2.5",
  "@types/d3-ease": "3.0.2",
  "@types/intl": "1.2.2",
  "@types/lodash": "4.17.7",
  "@types/node": "22.5.5",
  "keycloak-request-token": "0.1.0",
  "rimraf": "6.0.1",
  "sass": "1.77.8",
  "ts-node": "10.9.2",
  "typescript": "5.5.4"
}

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire le plantage dans un iOS 18 Simulator à l’aide de la méthode montrée openUrlWithParametersCompletion, puis examinez crashiOS18SimOniPhone15Pro.txt et le chemin d’appel de SFSafariViewController. Le travail sera considéré comme terminé lorsque l’ouverture de la vue Safari ne fera plus planter le runtime NativeScript iOS sur la configuration de simulateur signalée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
ios, typescript
Domaine
mobile-dev
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.