NativeScript / NativeScript/ios

NS runtime crashes in iOS18 Simulators

Offen
#262 2 Kommentare 3 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
JavaScript
Sterne
150
Forks
43
Ø Merge
3 T. 10 Std.
Gemergte PRs (30 T.)
22

Beschreibung

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"
}

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, den Absturz in einem iOS 18 Simulator mit der gezeigten Methode openUrlWithParametersCompletion zu reproduzieren, und untersuche anschließend crashiOS18SimOniPhone15Pro.txt sowie den Aufrufpfad von SFSafariViewController. Als erledigt gilt die Aufgabe, wenn das Öffnen der Safari-Ansicht die NativeScript iOS-Laufzeitumgebung auf der gemeldeten Simulator-Konfiguration nicht mehr zum Absturz bringt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
ios, typescript
Bereich
mobile-dev
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.