Fire fails to deploy to iOS device


(marc hoffman) #21

I don’t think we currently have a project template that sues a storyboard (we should probably add that), but you can just create the regular one, remove the .xib and then add the Storyboard item template via Add New File…

Curious, because literally nothing chnaged in that area, between 2287 and 2291, except for the url fix (and that’s specific to the real device handling). I’ll retest this here, myself, and will see if the log files are any help…

Also curious, now that I think of it: how can deployment to the device work, if it cannot find the certificate (since codesign is required for device deployment)?


(marc hoffman) #22

Probably a Simulator fluke then. I find the Simulator API to be very unstable and unpredictable. It’s gotten better since they introduced the official simctl API (which we now use, for the past year or so), but it’s still very flaky, oftentimes it fails with obscure errors, and simply killing and retrying most fixes it, or sometimes a reboot of the Mac is needed and does the trick.

Also, important tip (I fond out the hard way): the Simulator goes really berserk if you have a different version of Xcode running than the one that is selected as “use command lines tool from here”. IOW, ion you have, say Xcode 9.4 selected as active Xcode, bu for some reason have Xcode 9.3 open — or vice versa. The simulator just totally loses it…


(marc hoffman) #23
E: No default certificate matching name 'iPhone Developer: ...' was found.

Interesting. note the default. It’s not that it cannot find a specific certificate by name, it’s as if it doesn’t have a certificate set in the project at all, and thus as a fallback looks for the default one starting with “iPhone Developer”.

Two questions:

(a) are you sure you have an actual real certificate name set in the project settings (for the right configuration — eg. either in the “Project” column or the “Debug” column, assuming that’s the config you’re building? (If you did, and it didn’t;t find that, the error message should be “No certificate matching name or fingerprint ‘…’ was found.”, instead

and (b) do you have one named “iPhone Developer”? (most people do, because Xcode creates those on it’s own as default, but its perfectly fine if you don’t, and in that case this message is expected, of course.

thanx,
marc


(mikel evins) #24

mh
marc hoffman
chief architect

    June 2

mikelevins:
What made me say that was that the projects I created did not create storyboards, and I didn’t find a way to create them. Probably there are project-creation options that I didn’t try.

How do I create a Mac project that includes a storyboard? (Or did I somehow repeatedly fail to see them staring me directly in the face? That is not out of the question…)

I don’t think we currently have a project template that sues a storyboard (we should probably add that), but you can just create the regular one, remove the .xib and then add the Storyboard item template via Add New File…

mikelevins:
Correct, the previous situation was that building and running worked fine on the simulator.

Curious, because literally nothing chnaged in that area, between 2287 and 2291, except for the url fix (and that’s specific to the real device handling). I’ll retest this here, myself, and will see if the log files are any help…

Well, and now running on the simulator is working fine; I was not able to reproduce the failure I saw last night. If I can think of anything distinctive about what I was doing last night, I’ll try again to reproduce it.

Also curious, now that I think of it: how can deployment to the device work, if it cannot find the certificate (since codesign is required for device deployment)?

Let’s not exclude the possibility that I’m doing something wacky and unforeseen by your build and deploy code. Of course, I don’t know what that would be, but maybe we can figure it out.


(mikel evins) #25

Fair enough; as you say, the Simulator is not entirely reliable. It’s been intermittently wacky since forever.

Interesting about version mismatches, too.


(marc hoffman) #26

Yeah, but what I mean is this: your app fails to build for device, due to the missing certificate, right? But in 2287 it deployed to device (just didn’t debug) — the. bug I fixed — and in 2291 you say it now deploys and debugs. But: how did you test that, if the app fails to build due to the certificate issue? :wink:


(mikel evins) #27

My Xcode projects are set to manage certs and signing automatically for my development team (which is named Mikel evins).

The Fire project believes that the Certificate Name is “iPhone Developer: Mikel evins”, with the correct ID.

Fire also says that the Provisioning Profile ID is a specific UUID (Xcode thinks it’s “automatic”), and it thinks the Provisioning Profile Name is iOS Team Provisioning Profile ( – Mikel evins).

If there are additional steps I can perform to check the validity of the IDs, I would be happy to do them.

For what it’s worth, the User, Debug, Release, and Project settings for each of these fields are editable. The Default field for each is not editable.


(mikel evins) #28

Interesting question.

I just now built and ran the project in the simulator.

I also just now rebuilt for the device, and it again failed with the cert issue.

There was a copy of the test app on my device, built by Fire until I deleted it yesterday. It was built from the same project; it’s the one that I reported was unable to find the path on the target device. I didn’t see the current error (viz: No default certificate matching name ‘iPhone Developer: …’ was found.) until I grabbed the new build.

I still have the download of the build that produced that earlier error; if you like, I can reinstall it and try again, so we can see what its build log looks like.


(marc hoffman) #29

Ok, so it’s set to a specific value in the project, but apparently the build doesn’t see that setting… weird. Can chance I can see this project? (you can email to mh@remobjects.com, and I’ll keep it confidential, of course)

that’s fine/correct, yeah. That part seems to work fine, if it gets to the code sign error. you’ll have something like this in the log for the profile phase:

               -> Task LocateProvisioningProfile started for EmptyProject27, Toffee-iOS.
D:                Using provisioning profile 'Dwarfland Develop iOS (2017) with X'.
                  Full Bundle Identifier is '24G43Y5373.com.dwarfland.testapp27'.
D:                AppID in profile is '24G43Y5373.com.dwarfland.*'.
               <- Task LocateProvisioningProfile finished for EmptyProject27, Toffee-iOS, took 0.0772s (0.0775s).

What confuses me is the IDE shows the right cert set, but the build thinks no certificate s set (and thus tries to use find the default). The code for that, which I just dry-reviewed, looks pretty straight-forward; the only way it can ever show the “No default certificate…” message is if for some reason there’s no CodeSignCertificateName value in the project :(, as far as I can tell.

Hopefully seeing you project helps me narrow down whats happening there.

Thats as it should be. the default column shows, well, the implied defaults that will be used if a setting is nt set at all. so by definition, that’s not editable ;).

My gut reaction was, “yeah try this, coz maybe tis got broken in .2291”. but at some stage you were able to build, deploy and run with 2291 — since you confirmed that my fix for that worked:

so this project must have built (and signed) successfully with 2291 at some stage. the question is, what changed between then, and now when younger that build error :wink:


(mikel evins) #30

mh
marc hoffman
chief architect

    June 2

mikelevins:
The Fire project believes that the Certificate Name is “iPhone Developer: Mikel evins”, with the correct ID.

Ok, so it’s set to a specific value in the project, but apparently the build doesn’t see that setting… weird. Can chance I can see this project? (you can email to mh@remobjects.com, and I’ll keep it confidential, of course)

It’s just a simple Hello world project with nothing really in it (except my IDs and so forth, of course.)

I’ll send it in a moment, but first, let me clear something up:

mikelevins:
I still have the download of the build that produced that earlier error; if you like, I can reinstall it and try again, so we can see what its build log looks like.

My gut reaction was, “yeah try this, coz maybe tis got broken in .2291”. but at some stage you were able to build, deploy and run with 2291 — since you confirmed that my fix for that worked:

mikelevins:
On the bright side, it no longer complains that it’s unable to find the file on the device.

so this project must have built (and signed) successfully with 2291 at some stage. the question is, what changed between then, and now when younger that build error :wink:

I was unclear here. When I said it no longer complained that it was unable to find the path, that was also the first point at which it complained that it was unable to find the cert. I now understand that the reason it’s no longer complaining about the path is because it never reaches the point of looking for the path, because it fails on codesigning.

So no, I have not seen it deploy to the device since it began complaining about the cert.

Sorry, I should have been clearer in my reporting.

The project is attached.

Hello.zip (809 KB)


(marc hoffman) #31

Hmm, I do not see a specific certificate set in the .elements file (there’s no CodeSignCertificateName entry in the file). are you completely sure one shows as selected in Project settings? can you send me a screenshot?

Here’s what I see. note that the Certificate Name setting is not set, it’s gray and inherits the default value (which is the “iPhone developer: *” certificate that you don’t have.

So this is “as designed”, you’ll need to select the right certificate there.

That said, what seems wrong (a bug) here is that, at least here, the displayed default value is an actual certificate, instead of “iPhone developer: *”. I’m not sure why thats happening, but I can see how that would be confusing/misleading. I’ll investigate and get that fixed ASAP so that this will be more clear.

Update: nevermind that last bit; I review the logic and it actually only pre-selects one as default if it matches the “iPhone Developer: *” name (in which case the build will of course pick that default up as well). In your case, the default should be empty. I’d be curious to see a screenshot of what this looks like for you.

thanx,
marc


(mikel evins) #32

I can confirm that the Certificate name setting is gray, but the display on my machine seems different from the image you sent:

Note that, unlike your image, the gray Certifacte Name fields shlw my team name and ID. Also note that I do not see the Codesign Options field that shows on your screen.

With respect to the need to select the right certificate, here’s what I see in all fields when I display the menu to select a certificate:

In case it’s not clear, the only option I have is to select the choice that is already selected (and grayed out). The Refresh Options menu has no visible effect.


(marc hoffman) #33

You can turn on Show Advanced Project Settings (there a menu item, that I can’t checn right now which menu it’s under, probably Project, to show the Code Sing Options setting.


(marc hoffman) #34

But really, this brings us back to square on. Your project doesn’t have a certificate name set (that’s fine), you do have an “iPhone Developer: *” certificate and the IDE sees it, but apparently the build chain does not see it. Reviewing the code…

And I did find the problem. This indeed did get broken by 2291 :(. Your best option for a workaround for now is to install the External Compiler (as described here) to version .2289. this way you can keep the new Fire, with the debugging fix, but the week-old compile chain that doesn’t have this regression. I’m putting RemObjects Elements - Mac and Linux Zip Distro - 10.0.0.2289.zip into your personal downloads folder.

my sincerest apologies for this hassle :frowning:


(mikel evins) #35

“Apologies”? Are you kidding? Thanks a TON for blowing your Saturday on my build problems, Man. You’re building mad goodwill for RemObjects here!

I’ll try your proposed solution; do you still want the uncropped screenshot you requested?


(marc hoffman) #36

Naa, nevermind. i should have dropped that form there message, at first I misread and thought the Certificate name option itself was missing.

any time! that’s what I’m here for —± and what else am I gonna do, can’t sit at the beach all day :wink:

—marc

ps: apologies for parsing your username wrong and calling you Mike, earlier :wink:


(mikel evins) #37

No worries; it’s bound to happen. My excuse is that somebody else gave me that name. :slight_smile:


(mikel evins) #38

I downloaded the external compiler and installed it, then set the Fire preferences to use it. It failed to build the project.

I tried reinstalling it in a few different places (and, yes, running install.sh to complete the install–and, yes, I tried changing owenrship and permissions of the apparently-affected files); the result was always the same: failure to build.

I’ve appended the build log from my last attempt, in case it’s useful to you, but please don’t spend more time on this on my account. Fire builds for Mac and iOS are not on my critical path and, in fact, are not actually necessary to my work at all. I’m perfectly happy to wait for a future release and try again at that time.

I would prefer to use Swift, and therefore Elements, for Androind development, but I’m not working on that, yet. It would also be better from my perspective if I could use the same tools for all of my delivery targets, but, again, that’s not required–it’s just a complexity-reduction measure (assuming it actually does reduce complexity, of course!)

So I’m satisfied to leave this alone for now, and check back later to see if there’s a newer release at some point that works the way I need.

Thanks for all your efforts on my behalf, and if there’s anything I can do to help further, just let me know.

–me

P.S. Here’s the last build log:

/Library/Frameworks/Mono.framework/Versions/Current/Commands/mono /Users/mikel/Elements/EBuild.exe /Users/mikel/Laboratory/Fire_fun/Hello/Hello.sln --logger:fire --configuration:Debug --setting:7184CD30-7EE9-44E5-AB4F-B49AEDF37A2C,Simulator=True --setting:7184CD30-7EE9-44E5-AB4F-B49AEDF37A2C,Device=False --debug --statistics --verbosity:diagnostic --xml:/var/folders/wr/2nswqs812p3c0lr9kbw6ws340000gn/T/Hello.fire.xml --build --setting:TreatFixableErrorsAsWarnings=True
RemObjects EBuild. An open source build engine for Elements and beyond.
Copyright RemObjects Software 2016-2018. All Rights Reserved. Created by marc hoffman.
Version 10.0.0.2289 (develop) built on bajor, 20180525-143632. Commit b21ba51.

-> Task RemObjects.EBuild.BuildSolution started.
-> Project Hello started.
-> Task RemObjects.EBuild.Elements.ElementsBuildProject started for Hello.
-> Task RemObjects.EBuild.Elements.ElementsSanityCheck started for Hello, Toffee-iOS.
<- Task RemObjects.EBuild.Elements.ElementsSanityCheck finished for Hello, Toffee-iOS, took 0.0008s (0.0012s).
-> Task RemObjects.EBuild.Elements.ElementsApplyLegacySettings started for Hello, Toffee-iOS.
Mapping DefineConstants=DEBUG;TRACE; to ConditionalDefines
Mapping AssemblyName=Hello to BinaryName
<- Task RemObjects.EBuild.Elements.ElementsApplyLegacySettings finished for Hello, Toffee-iOS, took 0.0037s (0.0037s).
-> Task RemObjects.EBuild.Elements.ElementsPreparePlatforms started for Hello.
Preparing target ‘Toffee-iOS’ (platform ‘Toffee’).
D: Target-specific Settings, before prepare
D: - <BinaryName = Hello [Target: Toffee-iOS]>
D: - <ConditionalDefines = DEBUG;TRACE; [Target: Toffee-iOS]>
D: - <Mode = Toffee [Target: Toffee-iOS]>
D: - <SubMode = iOS [Target: Toffee-iOS]>
-> Task RemObjects.EBuild.Elements.ElementsGatherXcodeDetails started for Hello.
<- Task RemObjects.EBuild.Elements.ElementsGatherXcodeDetails finished for Hello, took 0.0000s (0.0002s).
-> Task RemObjects.EBuild.Elements.ElementsPreflightCocoa started for Hello.
Toffee SDK Folder found in ‘/Users/mikel/Elements/Toffee SDKs’.
<- Task RemObjects.EBuild.Elements.ElementsPreflightCocoa finished for Hello, took 0.0017s (0.0022s).
-> Task PrepareToffeePlatform started for Hello, Toffee-iOS.
E: ApplicationName=’/Users/mikel/Elements/ToffeeHelper’, CommandLine=’–listcerts’, CurrentDirectory=’’, Native error= Access denied
D: | at System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo startInfo) [0x002dc] in :0 .
D: | at System.Diagnostics.Process.Start () [0x0003a] in :0 .
D: | at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start().
D: | at RemObjects.Elements.RTL.Task.RunAsync (System.String aCommand, System.String[] aArguments, System.Collections.Generic.Dictionary2[TKey,TValue] aEnvironment, System.String aWorkingDirectory, System.Action1[T] aStdOutCallback, System.Action1[T] aStdErrCallback, System.Action1[T] aFinishedCallback) [0x00108] in <7a4a8f2fa2234d5fa8274c6e25d8a93e>:0 .
D: | at RemObjects.Elements.RTL.Task.Run (System.String aCommand, System.String[] aArguments, System.Collections.Generic.Dictionary2[TKey,TValue] aEnvironment, System.String aWorkingDirectory, System.String& aStdOut, System.String& aStdErr) [0x00042] in <7a4a8f2fa2234d5fa8274c6e25d8a93e>:0 . D: | at RemObjects.Elements.CrossBox.LocalCrossBoxServer.runAndCaptureOutputOfCommand____parameters (System.String command, System.Collections.Generic.List1[T] args) [0x0001c] in <86bf41867cd8428b92e39dccb1c8ac9a>:0 .
D: | at RemObjects.Elements.CrossBox.CrossBoxServer.RefreshCertificates () [0x00020] in <86bf41867cd8428b92e39dccb1c8ac9a>:0 .
D: | at RemObjects.Elements.CrossBox.LocalMacCrossBoxServer.setup () [0x00000] in <86bf41867cd8428b92e39dccb1c8ac9a>:0 .
D: | at RemObjects.Elements.CrossBox.CrossBoxServer…ctor (System.String aName) [0x00028] in <86bf41867cd8428b92e39dccb1c8ac9a>:0 .
D: | at RemObjects.Elements.CrossBox.LocalCrossBoxServer…ctor () [0x00000] in <86bf41867cd8428b92e39dccb1c8ac9a>:0 .
D: | at RemObjects.Elements.CrossBox.LocalMacCrossBoxServer…ctor () [0x00026] in <86bf41867cd8428b92e39dccb1c8ac9a>:0 .
D: | at RemObjects.Elements.CrossBox.CrossBoxServerFactory.InstantiateLocalMacCrossBoxServer () [0x00000] in <86bf41867cd8428b92e39dccb1c8ac9a>:0 .
D: | at RemObjects.Elements.CrossBox.CrossBoxServerFactory.InstantiateLocalCrossBoxServer () [0x00012] in <86bf41867cd8428b92e39dccb1c8ac9a>:0 .
D: | at RemObjects.Elements.CrossBox.CrossBoxManager…ctor () [0x00022] in <86bf41867cd8428b92e39dccb1c8ac9a>:0 .
D: | at RemObjects.Elements.CrossBox.CrossBoxManager.$meta_get_Instance (RemObjects.Elements.CrossBox.CrossBoxManager+MetaClass $meta) [0x0001d] in <86bf41867cd8428b92e39dccb1c8ac9a>:0 .
D: | at RemObjects.EBuild.Elements.ElementsPrepareToffeePlatform.Execute () [0x000cd] in <6dc13bd1666a4322831f9a0f3f248342>:0 .
D: | at RemObjects.EBuild.EBuildContext.RunTask________forTarget (RemObjects.EBuild.EBuildTask+MetaClass aTask, RemObjects.EBuild.EBuildValues aSettings, RemObjects.EBuild.EBuildObjects aObjects, RemObjects.EBuild.EBuildTarget aTarget) [0x002eb] in :0 .
<- Task PrepareToffeePlatform failed with exception ApplicationName=’/Users/mikel/Elements/ToffeeHelper’, CommandLine=’–listcerts’, CurrentDirectory=’’, Native error= Access denied for Hello, Toffee-iOS, took 0.0000s (0.1074s).
D: | at System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo startInfo) [0x002dc] in :0
D: | at System.Diagnostics.Process.Start () [0x0003a] in :0
D: | at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
D: | at RemObjects.Elements.RTL.Task.RunAsync (System.String aCommand, System.String[] aArguments, System.Collections.Generic.Dictionary2[TKey,TValue] aEnvironment, System.String aWorkingDirectory, System.Action1[T] aStdOutCallback, System.Action1[T] aStdErrCallback, System.Action1[T] aFinishedCallback) [0x00108] in <7a4a8f2fa2234d5fa8274c6e25d8a93e>:0
D: | at RemObjects.Elements.RTL.Task.Run (System.String aCommand, System.String[] aArguments, System.Collections.Generic.Dictionary2[TKey,TValue] aEnvironment, System.String aWorkingDirectory, System.String& aStdOut, System.String& aStdErr) [0x00042] in <7a4a8f2fa2234d5fa8274c6e25d8a93e>:0 D: | at RemObjects.Elements.CrossBox.LocalCrossBoxServer.runAndCaptureOutputOfCommand____parameters (System.String command, System.Collections.Generic.List1[T] args) [0x0001c] in <86bf41867cd8428b92e39dccb1c8ac9a>:0
D: | at RemObjects.Elements.CrossBox.CrossBoxServer.RefreshCertificates () [0x00020] in <86bf41867cd8428b92e39dccb1c8ac9a>:0
D: | at RemObjects.Elements.CrossBox.LocalMacCrossBoxServer.setup () [0x00000] in <86bf41867cd8428b92e39dccb1c8ac9a>:0
D: | at RemObjects.Elements.CrossBox.CrossBoxServer…ctor (System.String aName) [0x00028] in <86bf41867cd8428b92e39dccb1c8ac9a>:0
D: | at RemObjects.Elements.CrossBox.LocalCrossBoxServer…ctor () [0x00000] in <86bf41867cd8428b92e39dccb1c8ac9a>:0
D: | at RemObjects.Elements.CrossBox.LocalMacCrossBoxServer…ctor () [0x00026] in <86bf41867cd8428b92e39dccb1c8ac9a>:0
D: | at RemObjects.Elements.CrossBox.CrossBoxServerFactory.InstantiateLocalMacCrossBoxServer () [0x00000] in <86bf41867cd8428b92e39dccb1c8ac9a>:0
D: | at RemObjects.Elements.CrossBox.CrossBoxServerFactory.InstantiateLocalCrossBoxServer () [0x00012] in <86bf41867cd8428b92e39dccb1c8ac9a>:0
D: | at RemObjects.Elements.CrossBox.CrossBoxManager…ctor () [0x00022] in <86bf41867cd8428b92e39dccb1c8ac9a>:0
D: | at RemObjects.Elements.CrossBox.CrossBoxManager.$meta_get_Instance (RemObjects.Elements.CrossBox.CrossBoxManager+MetaClass $meta) [0x0001d] in <86bf41867cd8428b92e39dccb1c8ac9a>:0
D: | at RemObjects.EBuild.Elements.ElementsPrepareToffeePlatform.Execute () [0x000cd] in <6dc13bd1666a4322831f9a0f3f248342>:0
D: | at RemObjects.EBuild.EBuildContext.RunTask________forTarget (RemObjects.EBuild.EBuildTask+MetaClass aTask, RemObjects.EBuild.EBuildValues aSettings, RemObjects.EBuild.EBuildObjects aObjects, RemObjects.EBuild.EBuildTarget aTarget) [0x002eb] in :0
D: Target-specific Settings, after prepare
D: - <BinaryName = Hello [Target: Toffee-iOS]>
D: - <ConditionalDefines = DEBUG;TRACE; [Target: Toffee-iOS]>
D: - <Mode = Toffee [Target: Toffee-iOS]>
D: - <SubMode = iOS [Target: Toffee-iOS]>
<- Task RemObjects.EBuild.Elements.ElementsPreparePlatforms failed for Hello, took 0.1189s (0.1266s).
<- Task RemObjects.EBuild.Elements.ElementsBuildProject failed for Hello, took 0.0000s (0.1288s).
<- Project Hello failed, took 0.1291s.
Project ‘Hello’ failed to build.
Solution ‘RemObjects.EBuild.BuildSolution’ failed to build.
<- Task RemObjects.EBuild.BuildSolution failed for Hello, took 0.1340s (0.1357s).

 net time    gross time   task

   0.000s        0.108s   ElementsPrepareToffeePlatform 
   0.000s        0.127s   ElementsCompile 
   0.000s        0.127s   ElementsLink 
   0.000s        0.127s   ElementsDetermineFinalOutput 
   0.000s        0.128s   ElementsCopyFinalOutput 
   0.000s        0.128s   ElementsBuildProject 
   0.000s        0.000s   ElementsGatherXcodeDetails 
   0.000s        0.002s   ElementsSanityCheck 
   0.001s        0.002s   ElementsPreflightCocoa 
   0.003s        0.003s   ElementsApplyLegacySettings 
   0.118s        0.126s   ElementsPreparePlatforms 
   0.133s        0.135s   BuildSolution

(marc hoffman) #39

Can you set +x permissions on /Users/mikel/Elements/ToffeeHelper? it seems the install script neglects to do that (fixing). (chmod +x /Users/mikel/Elements/ToffeeHelper in Terminal)


(mikel evins) #40

Nice going; that does the trick.

Fire now builds and runs the Hello program both in the simulator and on the device.

Way to go, Man!