iOS and Android setup on MacOS - Build Failed when trying to set up WebDriverAgent project

Got an error:

Id: symbol(s) not found for architecture armv7

clang: error: linker command failed with exit code 1 (use -v to see invocation)

Attached the error

Screen Shot 2018-08-06 at 3.56.54 PM.png

Hi Vani,

I would recommend going through this tutorial step-by-step as there are a lot of important parts to the installation that are easily missed:

https://www.katalon.com/resources-center/tutorials/set-up-mobile-automation-project-macos/

If that doesn’t work, can you try clicking on error message you received - do you get more info? If so, can you please provide that?

Hi Chris,

I did follow the instructions and I am sure I haven’t missed anything.
The one difference that I observed is that- when I execute the command
“sh ./Scripts/bootstrap.sh -d” in termimal at WebDriverAgent level, I see difference from the one showed in the tutorial video.


Below is the error I see when i try to run the build for WebDriverAgentLib

Screen Shot 2018-08-08 at 9.55.49 AM.png

Screen Shot 2018-08-08 at 9.58.53 AM.png

Hi Vani,

I think I’ve encountered this error before. For some reason, when you install Appium on MacOS, the WebDriverAgent/Carthage directory - where the project dependencies are stored - is actually a file, not a directory. That means that the dependencies can’t be downloaded. That’s what the detailed error is telling you - it can’t find the “FBIsVisible” code, which is pulled in from an external library with the Carthage tool.

You can confirm if this is the case by looking at the Carthage file’s properties in your WebDriverAgent folder:

ls -l Carthage

If the output doesn’t start with a “d”, then it’s just a file.

Correct:

drwxr-xr-x

Incorrect

-rwxr-xr-x

To fix this, in your WebDriverAgent folder, remove the Carthage file:

rm Carthage

Then create a directory correctly:

mkdir Carthage

Finally, try running the bootstrap.sh command again:

./Scripts/bootstrap.sh -d

Hope this helps!


I see “drwxr-xr-x”, so i would assume that it is saved as Directory. I have no idea what else is going wrong.

Screen Shot 2018-08-08.png

OK, looks like you’re set up correctly and this might actually be a WebDriverAgent compatibility issue with Xcode, specifically with the XCElementSnapshot class.

Do you know if you’re running Xcode 10? In that case, there is an open issue: https://github.com/facebook/WebDriverAgent/issues/968

To work around it, you should be able to set the “Other Linker Flags” for your project to weakly link the XCElementSnapshot class:

The setting for Other Linker Flags is:

-Wl,-U,"_OBJC_CLASS_$_XCElementSnapshot"

Hope this helps!

Screen Shot 2018-08-08 at 1.59.35 PM.png

Yes I am running Xcode 10 :frowning:
Unfortunately, I don’t find “Other Linker Flags”

Screen Shot 2018-08-08 at 3.13.44 PM.png

Hi Vani, can you verify that you have the “All” button at the top checked and not the “Basic” button? There should be a whole lot of Linking options when you select “All”:

Screen Shot 2018-08-09 at 11.05.21 AM.png

Hi Chris,

Your suggestion for “Other linker Flags” did fix my build failure issue for “WebDriverAgentLib”. Build still fails for “WebDriverAgentRunner” for errors:

Showing All Messages

Build system information

error: Failed to create provisioning profile. The app ID “com.facebook.WebDriverAgentLib” cannot be registered to your development team. Change your bundle identifier to a unique string to try again. (in target ‘WebDriverAgentRunner’)

Showing All Messages

Build system information

error: No profiles for ‘com.facebook.WebDriverAgentLib’ were found: Xcode couldn’t find any iOS App Development provisioning profiles matching ‘com.facebook.WebDriverAgentLib’. (in target ‘WebDriverAgentRunner’)

Hi Vani, glad to hear we’re making progress!

The error you’re seeing is because of code signing and provision profiles in iOS. They are the ways that Apple guarantees an app is made by an authorized developer and that it can run on specified devices. It’s also one of the biggest points of confusion in iOS development.

In the case of WebDriverAgentRunner, in order to run on a device or simulator, the app must be “signed” by your organization or your own developer certificate. Because your team is probably not Facebook, you can’t sign an app with a bundle identifier of “com.facebook.*” Fortunately, that’s easy to change!

  • Once again, go to the Build Settings screen for WebDriverAgentRunner.
  • This time, search for “product bundle identifier”
  • Change “com.facebook.wda.runner” to something with your company’s id, like “com.mycompany.wda.runner”
  • Switch back to the “General” tab and you should hopefully see no red warnings. If you do see warnings, I recommend turning on “Automatically manage signing” and choosing your company’s team. If you don’t have an Apple Developer signing certificate, you’ll have to sign up for one at developer.apple.com or ask someone in your company to set you up with one.

I think that should fix the latest error (I don’t think you need to set up signing for WebDriverAgentLib).

Please let me know how that works out,

Chris

Thank you Chris. With your help i could build successfully both WebDriverAgentLib and WebDriverAgentRunner

That’s great news, glad to hear it, Vani!

Hi Chris Trevarthen

Can you help me with this :

Everytime i ask something in Forum, no one from Katalon Support help me.

Thanks

Hi Chris,
Is it ok if no ‘Signing Certificate’ shows up after selecting ‘Automatic manage signing’ and the team for ‘WebDriverAgentLib’ in Xcode however the build is successful.I am concerned of any issues I may face during my testing.

Certificate shows up fine for ‘WebDriverAgentRunner’.

Screen Shot 2018-08-27 at 8.56.52 AM.png

Hi Vani, I don’t have WebDriverAgentLib signed on the simulators on my machine or our CI server, and it seems to work fine. The key part is to sign WebDriverAgentRunner, which is what gets installed on the devices, so I think you should be good.

When I try to spy on Mobile Object on real iOS device, below error show up and that is when I thought may be WebDriverAgent needs signing certificate.

Screen Shot 2018-08-23 at 1.17.10 PM.png

Hi Vani,

I haven’t tried on a real device, but will do so today. Have you tried on a simulator with any luck?

In the meantime, I wonder if this might help you:

https://github.com/facebook/WebDriverAgent/issues/902#issuecomment-383362376

- Chris

No Chris, had no luck with that either.
In my simulator, my app gets installed.It flashes as if it is about to open but never does.

If it won’t run on your simulator, either, that seems like it’s still a signing issue. There are a couple of things to try per the xcuitestdriver github README: https://github.com/appium/appium-xcuitest-driver

First make sure you have these dependencies installed:

brew install libimobiledevice --HEAD
npm install -g ios-deploy

You may also be running into security issues with Accessibility:

https://github.com/appium/appium-xcuitest-driver#real-device-security-settings