Fire: Building solution containing watchkit app

I have a solution with a ios app and a watchkit app. It fails to build with the error.

E: /Users/JohnMoshakis/Documents/develop/Nougat/WatchThis/WatchKitApp/bin/$(Configuration)/watchOS/WatchKitApp.app ‘AppResource file’ does not exist.

It works fine with xbuild.

Cheers,
John

WatchThis.zip (744.4 KB)

not unexpected, yeah. i’ll neee to get proper project references hooked up for this, will try to have a look at that today.

I’ve implemented proper project reference support for this for EBuild. I’d love to send you new build in a couple hours to test it (the app bundles look good, but I’m in no position right now to test on device).

What you’ll wanna do when you get the new build is

  • remove the hard file references between the projects
  • redraw the projects onto each other (extension onto watchOS app; watchOS app onto iOS app) to have the new fire create actual project references.

EBuild will now handle these cleanly to add the proper bundles into MacPack, including device vs sim, different configurations, etc. (it does the same for Cooper->Island NDK references, btw).

What’s not done (yet) is the IDE doing the extra setup magic to the Info.plists when dragging the projects (but yours should already have that), nor will it “know” that these are especial references, so they’ll probably show as missing/broken in the IDE for now.

Up, .2224. Feedback appreciated.

Thanks. Should this be in my personal downloads ?

yes.

You did mean drag the app and appex from finder into the solution explorer ?

I was wondering why you asked me to remove the hard file references between the projects ?

I was looking at the differences and I see in the iOS elements file

Originally it was

   <AppResource Include="..\iSailedWatchOS\bin\$(Configuration)\watchOS\iSailedWatchOS.app">
      <DestinationFolder>Contents\Watch</DestinationFolder>
    </AppResource>

And now its
<AppResource Include="..\iSailedWatchOS\bin\Debug\watchOS\iSailedWatchOS.app" />

no. within Fire, drag one project onto the other to create a project ref.

I was trying that but I cant work out where to drag it to. For example if I drag the watchos extension to the watchos app the only place it seems to allow dropping is references but that doesnt seem to do anything.

hmm. it should add it as reference, yeah. does here.

Here’s what the project looks for me, after I dragged the project refs:

(again, the error message omg the ref is expected for now). it builds cleanly and as everything bundled as it should, as far as I can tell w/o testing on device.

I don’t know what I’m doing wrong. I drag shared project references all the time, I don’t know why this should be different.

I’ll have a go later on.

I can drag a shared project to all three projects but I cant drag the extension or the watch app

hmm, ok. i’ll check again before tonight’s beta, maybe something else broke/changed after i implemented this, coz it did work for me… i’ll keep you posted.

Confirmed and fixed, something really stupid in there logic for checking what references are valid that I tweaked after implementing this. my apologies.

With the latest I can add references.

One thing I did notice is that its updated the CFBundleDisplayName in the watch app and the bundleidentifiers in the elements files. Would it be possible to only do that during project creation ?

I had a terrible time at the beginning getting everything to work.

I tried a deployment to a iPhone and Im getting

I see this in the build log

60% InspectingPackage
60% TakingInstallLock
65% PreflightingApplication
65% InstallingEmbeddedProfile
70% VerifyingApplication
Error: AMDeviceInstallApplication | e80000cf (-402652977)
Deployment of app bundle failed.

check then device log in Xcode for a detailed/concrete error. i’m not surprised SOMETHING is still off, we’ll need to figure out what it is. will follow up on the rest tomorrow.

I think this might be it

default 00:43:16.010860 -0500 crossboxhelper AMDeviceTransferApplication (thread 0x7fffb8dba340): ENTRY
default 00:43:16.502147 -0500 crossboxhelper nuke_path (thread 0x7fffb8dba340): AFCRemovePath of ‘PublicStaging/SailingLogiOS.app’ returned 8
default 00:43:19.128091 -0500 crossboxhelper AMDeviceInstallApplication (thread 0x7fffb8dba340): ENTRY
default 00:43:20.557398 -0500 crossboxhelper AMDErrorForMobileInstallationCallbackDict (thread 0x7fffb8dba340): GOT AN ERROR 0xe80000cf
default 00:43:20.557498 -0500 crossboxhelper perform_command (thread 0x7fffb8dba340): There was an error communicating with the service agent: 0xe80000cf
default 00:43:20.557569 -0500 crossboxhelper AMDeviceSecureInstallApplication (thread 0x7fffb8dba340): Old style install failed for (PublicStaging/SailingLogiOS.app)
default 00:43:20.557660 -0500 crossboxhelper AMDeviceSecureInstallApplication (thread 0x7fffb8dba340): Could not install package on device: The WatchKit app has an invalid stub executable.

Something about the WatchKit app having an invalid stub executable ?

hmm. yeah. i think i might need to rename the WK binary stub to the actual app name… i’ll compare what our v9/msbuild task does; i know EBuild currently does not rename it.

Fixed, along with a couple other CreateAppBundle bugs. I’ll have a new external compiler for you in 30 or so.

it only does that once, when you link the project, as afaik they HAVE to match. The build only sets/changes this value in the Info.plist only if none is specified in the original .plist. Once you set a value there, that will persist/override what goes into the app… What’s the exact problem you’re having?