Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

watchOS and visionOS project init errors #6281

Open
gfmio opened this issue May 14, 2024 · 3 comments
Open

watchOS and visionOS project init errors #6281

gfmio opened this issue May 14, 2024 · 3 comments
Labels
type:bug Something isn't working

Comments

@gfmio
Copy link

gfmio commented May 14, 2024

What happened?

I just set up tuist for the first time. It's a great project, so thank you for creating and maintaining tuist.

I just tried to generate a test project of each type to look at the project structure and what tuist generates.

I ran into issues when generating watchOS and visionOS projects. Nevertheless, both projects build when running tuist build. However, launching the watchOS project in a simulator fails while launching the visionOS project succeeds.

If it helps, I installed mise using homebrew and I am then installing tuist using mise.

Thank you in advance for looking into this!

How do we reproduce it?

For watchOS:

mkdir tuist-watchos
cd tuist-watchos
mise use tuist
tuist init --platform watchos
tuist build
open TuistWatchos.xcodeproj

Then run the simulator.

For visionOS:

mkdir tuist-visionos
cd tuist-visionos
mise use tuist
tuist init --platform visionos
tuist build
open TuistVisionos.xcodeproj

Error log

For watchOS, I get the following error during tuist init --platform watchos:

› tuist init --platform visionos
We received an error that we couldn't handle:
    - Localized description: The file “Assets.xcassets” couldn’t be opened because there is no such file.
    - Error: Error Domain=NSCocoaErrorDomain Code=260 "The file “Assets.xcassets” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/Users/gfmio/.local/share/mise/installs/tuist/latest/bin/Templates/default/visionOS/Assets.xcassets, NSUnderlyingError=0x149f226b0 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

If you think it's a legit issue, please file an issue including the reproducible steps: https://github.com/tuist/tuist/issues/new/choose
Consider creating an issue using the following link: https://github.com/tuist/tuist/issues/new/choose

Running tuist build succeeds nevertheless without any issues:

› tuist build
Loading and constructing the graph
It might take a while if the cache is empty
Using cache binaries for the following targets: 
Generating workspace TuistWatchos.xcworkspace
Generating project TuistWatchos
Building scheme TuistWatchos
[TuistWatchos] Processing TuistWatchos-Info.plist
[TuistWatchos] Linking TuistWatchos
[TuistWatchos] Linking TuistWatchos
Signing TuistWatchos.app
[TuistWatchos] Touching TuistWatchos.app
Build Succeeded
The project built successfully

When trying to run the simulator from XCode, I get a popup with:

App installation failed: Unable to Install “TuistWatchos”

Please try again later. WatchKit app being installed is missing either the WKWatchKitApp or WKApplication key set to true in its Info.plist

App installation failed: Unable to Install “TuistWatchos”
Domain: IXUserPresentableErrorDomain
Code: 1
Failure Reason: Please try again later.
Recovery Suggestion: WatchKit app being installed is missing either the WKWatchKitApp or WKApplication key set to true in its Info.plist
User Info: {
    DVTErrorCreationDateKey = "2024-05-14 09:09:33 +0000";
    IDERunOperationFailingWorker = "_IDEInstalliPhoneSimulatorWorker";
    SimCallingSelector = "installApplication:withOptions:error:";
}
--
App installation failed: Unable to Install “TuistWatchos”
Domain: IXUserPresentableErrorDomain
Code: 1
Failure Reason: Please try again later.
Recovery Suggestion: WatchKit app being installed is missing either the WKWatchKitApp or WKApplication key set to true in its Info.plist
User Info: {
    IDERunOperationFailingWorker = "_IDEInstalliPhoneSimulatorWorker";
    SimCallingSelector = "installApplication:withOptions:error:";
}
--
Unable to Install “TuistWatchos”
Domain: IXUserPresentableErrorDomain
Code: 1
Failure Reason: Please try again later.
Recovery Suggestion: WatchKit app being installed is missing either the WKWatchKitApp or WKApplication key set to true in its Info.plist
--
WatchKit app being installed is missing either the WKWatchKitApp or WKApplication key set to true in its Info.plist
Domain: MIInstallerErrorDomain
Code: 92
User Info: {
    FunctionName = "-[MIInstallableBundle _performWatchVerificationForSigningInfo:isSystemAppInstall:withError:]";
    LegacyErrorString = InvalidWatchKitApp;
    SourceFileLine = 1192;
}
--

Event Metadata: com.apple.dt.IDERunOperationWorkerFinished : {
    "device_model" = "Watch7,4";
    "device_osBuild" = "10.4 (21T214)";
    "device_platform" = "com.apple.platform.watchsimulator";
    "dvt_coredevice_version" = "355.24";
    "dvt_mobiledevice_version" = "1643.100.58";
    "launchSession_schemeCommand" = Run;
    "launchSession_state" = 1;
    "launchSession_targetArch" = arm64;
    "operation_duration_ms" = 9043;
    "operation_errorCode" = 1;
    "operation_errorDomain" = IXUserPresentableErrorDomain;
    "operation_errorWorker" = "_IDEInstalliPhoneSimulatorWorker";
    "operation_name" = IDERunOperationWorkerGroup;
    "param_debugger_attachToExtensions" = 0;
    "param_debugger_attachToXPC" = 1;
    "param_debugger_type" = 3;
    "param_destination_isProxy" = 1;
    "param_destination_platform" = "com.apple.platform.watchsimulator";
    "param_diag_MainThreadChecker_stopOnIssue" = 0;
    "param_diag_MallocStackLogging_enableDuringAttach" = 0;
    "param_diag_MallocStackLogging_enableForXPC" = 1;
    "param_diag_allowLocationSimulation" = 1;
    "param_diag_checker_tpc_enable" = 1;
    "param_diag_gpu_frameCapture_enable" = 0;
    "param_diag_gpu_shaderValidation_enable" = 0;
    "param_diag_gpu_validation_enable" = 0;
    "param_diag_memoryGraphOnResourceException" = 0;
    "param_diag_queueDebugging_enable" = 1;
    "param_diag_runtimeProfile_generate" = 0;
    "param_diag_sanitizer_asan_enable" = 0;
    "param_diag_sanitizer_tsan_enable" = 0;
    "param_diag_sanitizer_tsan_stopOnIssue" = 0;
    "param_diag_sanitizer_ubsan_stopOnIssue" = 0;
    "param_diag_showNonLocalizedStrings" = 0;
    "param_diag_viewDebugging_enabled" = 1;
    "param_diag_viewDebugging_insertDylibOnLaunch" = 1;
    "param_install_style" = 0;
    "param_launcher_UID" = 2;
    "param_launcher_allowDeviceSensorReplayData" = 0;
    "param_launcher_kind" = 0;
    "param_launcher_style" = 0;
    "param_launcher_substyle" = 16384;
    "param_runnable_appExtensionHostRunMode" = 0;
    "param_runnable_productType" = "com.apple.product-type.application";
    "param_structuredConsoleMode" = 1;
    "param_testing_launchedForTesting" = 0;
    "param_testing_suppressSimulatorApp" = 0;
    "param_testing_usingCLI" = 0;
    "sdk_canonicalName" = "iphonesimulator17.4";
    "sdk_osVersion" = "17.4";
    "sdk_variant" = iphonesimulator;
}
--


System Information

macOS Version 14.4.1 (Build 23E224)
Xcode 15.3 (22618) (Build 15E204a)
Timestamp: 2024-05-14T10:09:33+01:00

Running tuist init --platform visionos throws a similar error as for watchOS:

› tuist init --platform visionos
We received an error that we couldn't handle:
    - Localized description: The file “Assets.xcassets” couldn’t be opened because there is no such file.
    - Error: Error Domain=NSCocoaErrorDomain Code=260 "The file “Assets.xcassets” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/Users/gfmio/.local/share/mise/installs/tuist/latest/bin/Templates/default/visionOS/Assets.xcassets, NSUnderlyingError=0x149f226b0 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

If you think it's a legit issue, please file an issue including the reproducible steps: https://github.com/tuist/tuist/issues/new/choose
Consider creating an issue using the following link: https://github.com/tuist/tuist/issues/new/choose

Building throws a warning, but succeeds:

› tuist build
Loading and constructing the graph
It might take a while if the cache is empty
Using cache binaries for the following targets: 
Generating workspace TuistVisionos.xcworkspace
Generating project TuistVisionos
Building scheme TuistVisionos
[TuistVisionos] Processing TuistVisionos-Info.plist
Signing TuistVisionos.app
[TuistVisionos] Touching TuistVisionos.app
Build Succeeded
The project built successfully

The following warnings need attention:
 · No files found at: /Users/gfmio/projects/experiments/tuist-visionos/TuistVisionos/Resources/**

Opening the project in XCode and running it in the VisionOS simulator succeeds without any issues though.

macOS version

14.4.1 (Build 23E224)

Tuist version

4.12.1

Xcode version

15.3 (22618) (Build 15E204a)

@gfmio gfmio added the type:bug Something isn't working label May 14, 2024
@gfmio gfmio changed the title watchOS project init errors watchOS and visionOS project init errors May 14, 2024
@gfmio
Copy link
Author

gfmio commented May 14, 2024

In terms of the build errors, it seems that some keys were missing from the Info.plist:

Firstly, either WKWatchKitApp or WKApplication needs to be set. WKWatchKitApp is for WatchKit 1 which is not longer supported, WKApplication is for WatchKit 2 and should be set to true.

"WKApplication": true,

Secondly, the manifest needs to be define if the app is watch-only or if it has a companion app and whether it can run independently of it.

If it is stand-alone:

"WKWatchOnly": true

For a companion app:

"WKWatchOnly": false,
"WKRunsIndependentlyOfCompanionApp": true / false,
"WKCompanionAppBundleIdentifier": "io.tuist.TuistExample"

For a companion app, the watchOS app bundle identifier also needs to be prefixed with the companion app's bundle identifier. In this example, the bundle identifier would need to be something like io.tuist.TuistExample.watchosapp.

@gfmio
Copy link
Author

gfmio commented May 14, 2024

Shall I create a PR to integrate those changes into the watchOS project generator?

@fortmarek
Copy link
Member

Shall I create a PR to integrate those changes into the watchOS project generator?

Yes, that would be greatly appreciated 🙏 Let us know if you need any pointers, but your suggestions look like a good way forward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants