Trying to debug native iOS App with VS 2019 - c++

I'm trying to use VS 2019 to install and debug a native iOS project.
I 've followed instructions from here, installed Node from here.
The app builds and installs to my device (note: only over USB. If trying in WiFi mode, I got an error Failed to fetch the first device. Reason: Cannot read property 'name' of undefined).
However the application won't run. Tried (from here):
sudo chmod 777 /var/db/lockdown
brew uninstall ios-webkit-debug-proxy
brew uninstall ideviceinstaller
brew uninstall libimobiledevice
brew install --HEAD libimobiledevice
brew install --HEAD ideviceinstaller
brew install --HEAD ios-webkit-debug-proxy
At the OSX level my console looks like this:
Device.installApp executing command: /usr/local/lib/node_modules/vcremote/node_modules/ios-deploy/build/Release/ios-deploy --id 355c4a7afbd0e98ac9596c146fa1d051e9b2b3fe --nostart --bundle "/Volumes/DATA/r/F/ITOOLS/Tralala/Tralala/ARM64/Debug//Tralala.app" --timeout 5
Installed app on device: 'iPad'
GET /projects/2df69712-b4b8-43f3-9ada-fc50ca3fa6b1/build/ce4ed9aa-f673-4c78-99cb-968e2dc5bb7c/install?ver=1.4.0&appName=Tralala.app 200 5856ms
Debug Listener already listening
GET /debug/appRemotePath?package=com.Tralala&deviceUdid=xxxx 404 38ms - 196b
In Visual Studio, I'm getting this error:
Unable to start debugging. Unexecpted failure trying to reach vcremote: NotFound
First, the package name is invalid. But even If I changed it to com.Tralala, the same problem, 404.
Why? Do I miss something?
Note that the app won't debug in the Simulator either, it runs there but VS hangs to a message "Wait for application to launch. Please (re)launch ..."
I checked instructions from here as well, no luck. It seems it can't find the app installed, but the app is there and libimobiledevice can see it.

Related

Expo 36: Unable to resolve "../../data" from "node_modules/css-tree/lib/syntax/default.js"

Got this error after upgrading expo 35 to 36.
Unable to resolve "../../data" from "node_modules/css-tree/lib/syntax/default.js"
I've tried to yarn add css-tree. This error was gone, but then module react-native-svg started giving the same error with it's included css-tree module.
I've tried to upgrad expo-cli to the latest version and restart terminal. I'm running builds with expo start -c to ensure cache doesn't affect it. I've tried to delete app from the simulator. Still the same.
I've been able to apply a temporary fix by upgrading css-tree dependency inside the react-native-svg, but this is a really wrong way to go as far as I know.
Any ideas?
I found a way to fix it, you just need to install css-tree package on your project.
npm install css-tree
or if you are using yarn
yarn add css-tree
as of SDK 38 this problem still shows up and seems to be caused by a version resolution issue where Yarn/NPM understands 1.0.0-alpha9 to be more recent then 1.0.0-alpha.37 (which is the minimum requirement for react-native-svg-transformer).
Using the resolutions override with Yarn 2 or Yarn 1 as follows fixed it for me with no other extra tweaking.
"resolutions": {
"css-tree": "1.0.0-alpha.39"
}
"resolutions": {
"**/css-tree": "1.0.0-alpha.39"
}
I needed to use react-native-svg-icon ran into the exact same issue.
I'm also running Expo SDK v36, and when it suggested me to install react-native-svg via the cli : expo install react-native-svg, that's what I did; there were errors with this approach most notably when you use import { Circle } from 'react-native-svg' (for newer versions of the package) and 'expo' sometimes doesn't install the package.json properly so I found installing the same version of react-native-svg w/o expo cli was the best approach.
Try running this npm i react-native-svg#9.13.3
Fixed it for me.
This issue occurred for me when building my app using MS App Center, the App Center build scripts picked up on an old yarn.lock file in the project using the line if [ -f yarn.lock ]; then { yarn install && yarn list --depth=0; } else npm install; fi however I normally use npm rather than Yarn.
Removing this file allowed the build to use npm which resolved this issue.

unknown error: call function result missing 'value' for Selenium Send Keys even after chromedriver upgrade

I am getting the below error while sending keys.
Result Message:
System.InvalidOperationException : unknown error: call function result missing 'value'
(Session info: chrome=65.0.3325.146)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.14393 x86_64)
I have updated the chrome driver to 2.36 but still my code search for 2.33?
Any idea ?
I've gotten the same error, please download the last ChromeDriver version and/or update chrome browser version and it will be working fine :)
https://chromedriver.storage.googleapis.com/index.html?path=2.36/
After updating the Google Chrome browser to Version 65.0.3325.146 (Official Build) (64-bit), I'm also encountered with the same error
while sending values to the input field, here's the error message...
selenium.common.exceptions.WebDriverException: Message: unknown error: call function result missing 'value'
using Chromedriver 2.32 and Google Chrome 65.0
As I did some research on the same, I found a recent commit on Google chrome v65 changelogs which help me to resolve the issue.
Solution:
Update Google Chrome to latest stable version (in my case it's v65 on 9/mar/2018)
Download and configure latest chromedriver (v2.36).
For configuring chromedriver (on Ubuntu) follow these steps...
Extract the downloaded zip file.
Copy the extracted chromedriver file to /usr/local/bin or to the location where you usually store the executable binaries.
Add the same path (where you place the chromedriver file) to environment variable PATH as
export PATH=$PATH:/usr/local/bin
For testing the installation, restart the terminal and type this command
chromedriver --version
it would show the version of chromedriver that you just installed.
Note: If the chromedriver already installed and configured then just replace the existing driver file and If you don't know where the Chromedriver binaries already stored then try to find the file using following command
sudo find -H / -type f -iname chromedriver
It is because of the update of chrome browser version from 64.xx to 65.xx
Now you have 2 options to run your tests successfully.
Downgrade your chrome browser to previous version and with the old chromedriver which you have now.
Upgrade your Chromedriver to 2.36 version with the updated Chrome browser.
visit https://chromedriver.storage.googleapis.com/index.html?path=2.36 and download the new chromedriver.
Option 2 is better.
Replace your ChromeDriver.exe with latest version.. Same can be downloaded from Google easily.
Also its better to get it done automatically by using webDriver manager as explained below -
1. Add Mvn dependency to your project POM:
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>${webdrivermanager.version}</version>
<scope>test</scope>
</dependency>
Now in your Browser instantiation class instead of using traditional way to create driver i.e. by using System.setProperty(See belwo)...
System.setProperty("webdriver.chrome.driver","src/test/resources/drivers/chromedriver.exe");
Use below approach:
WebDriverManager.chromedriver().setup();
webDriver = new ChromeDriver(chromeOptions);
And that's all, you are done!
Use below links for your reference-
What is Browser Binary Manager how to use it for Selenium
or chkout git project for same-
https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency
Need to update chromedriver :
In console, run: chromedriver-update 2.36
The error says it all :
System.InvalidOperationException : unknown error: call function result missing 'value'
(Session info: chrome=65.0.3325.146)
(Driver info: chromedriver=2.33.506120
The error clearly complains about InvalidOperationException
Your main issue is the version compatibility between the binaries you are using as follows :
You are using chromedriver=2.33
Release Notes of chromedriver=2.33 clearly mentions the following :
Supports Chrome v60-62
You are using chrome=65.0
Release Notes of ChromeDriver v2.37 clearly mentions the following :
Supports Chrome v64-66
Your Selenium Client version is unknown to us.
So there is a clear mismatch between the ChromeDriver version (v2.33) and the Chrome Browser version (v65.0)
Solution
Upgrade Selenium to current levels Version 3.11.0.
Upgrade ChromeDriver to ChromeDriver v2.37 level.
Keep Chrome version in between Chrome v64.x-66.x levels. (as per ChromeDriver v2.37 release notes)
Clean your Project Workspace through your IDE and Rebuild your project with required dependencies only.
Use CCleaner tool to wipe off all the OS chores before and after the execution of your test Suite.
If your base Web Browser/Web Client version is too old, then uninstall it through Revo Uninstaller and install a recent GA and released version of Web Browser/Web Client.
Execute your #Test.
If you are on Mac:
brew upgrade selenium-server-standalone
brew upgrade chromedriver
if the above two are not installed:
brew install selenium-server-standalone
brew install chromedriver
I'm running Protractor and have encountered the same issue.
The solution in my case was rather simple.
$ npm update protractor -g
$ webdriver-manager update
If you are on the latest stable Google Chrome (e.g. 67) I recommend to:
brew uninstall chromedriver
brew tap homebrew/cask
brew cask install chromedriver
These set of commands will uninstall your current chromedriver, check for updates and install the latest found (e.g. 2.40).
Use xpaths instead of class names to locate elements
After updating chrome and its drivers it didn't helped me at all!!
I don't know how much it makes sense but it worked for me when i replaced class name with xpath. This is the xpath , i used to automate sending whatsapp message using python.
driver.find_element_by_xpath('//*[#id="main"]/footer/div[1]/div[2]/div')
previously i Was Using
driver.find_element_by_class_name('Some class Name Here')
In my case the team I'm on points selenium to a specific chromedriver file we had. In order to get Selenium to use the updated chromedriver, I first installed it with brew and then created a symbolic link to point where Selenium looks for it:
brew install chromedriver
ln -s /usr/local/Cellar/chromedriver/2.36/bin/chromedriver /path/where/selenium/expects/chromedriver
On the chance this might be helpful to someone I needed an additional step:
I am on MacOS X. I did
brew upgrade chromedriver
bundle exec chromedriver-upgrade
I have the chromedriver-helper gem installed, but it is stashed and requires the "bundle exec" prefix or the shell can't find the command.
The above fixed my problem.
As mentioned by others, the latest chromedriver did the trick for me. In case you downloaded the driver manually and want to tell appium to use the new chromedriver you can do so by this command:
appium --chromedriver-executable /path/to/driver/chromedriver ....
I'm running Protractor (webdriver-manager) with Selenium in a Windows environment, and I had to do the following:
webdriver-manager update --versions.chrome="2.36" (This downloaded the new Chromedriver to the right path but didn't enable it in protractor.)
Edit %userprofile%\AppData\Roaming\npm\node_modules\protractor\config.json and changed the chromedriver value from 2.32 to 2.36.
Delete my old chromedriver_2.32.exe from %userprofile%\AppData\Roaming\npm\node_modules\protractor\selenium for good measure (not sure if that was required.)
Or:
When another Chromedriver update became needed, I was no longer able to update this way. A configuration setting still expected the old path and filename, and I couldn't figure out where to change that setting. So I just renamed the latest chromedriver to "chromedriver.exe" and stuck it in C:\Windows\system32 (which is always referenced by PATH). Crude, but effective.
If you're using gulp-protractor plugin, make sure to update it as well.
I don't know if you're still on this, but I was receiving a similar error. I had the latest version of chromedriver in my PATH and Google Chrome was updated. I run Python 3.6 on windows 10 x64 bit. What I was getting trying to select a value from a dropdown menu on a webpage. The weird thing was, it would select the dropdown value correctly and the page would be updated nicely, but I'd receive that stupid error anyway and my script would freeze. So I just made an exception error handler for it, because like I said it selected the dropdown value correctly, so I just wanted to bypass that dumb error message:
# select by value
try:
select.select_by_value('100')
except:
pass
hopefully someone finds this helpful.
The issue is because of mismatch in chromedriver and chrome browser version.
Below link specifies the versions of chromedriver supporting the chrome browser's version.
http://chromedriver.chromium.org/downloads

Why is Foundation installation with CodeKit failing?

I have been using CodeKit for several years now, and this morning I tried to start a new project by downloading Zurb's Foundation but keep getting this error.
Foundation: Installation failed. CodeKit cloned Foundation's Git repository to
your project folder, but it could not download the latest components using Bower. Try these steps to fix the problem:
1. Be sure you're connected to the Internet.
2. If you are running any blocking/security apps like Little Snitch or Antivirus software, disable those.
3. If you have installed Apple's Developer Tools, launch Xcode, accept the license terms and let the installation routine finish.
4. Make sure your network or firewall is not blocking the default port for git:// URLs, which is 9418. (Corporate networks do this frequently.) Use the "Tasks" menu to switch Git to use https:// URLs instead.
5.Delete the following hidden folders in your home directory: ".cache", ".npm", ".local"
I followed the 5 steps of what to try, and I'm still not having any luck getting Foundation to install.
Trying to install Foundation 6 via the New Zurb Foundation Project option.
You may open Terminal and reset XCode:
$ sudo xcode-select --reset
Worked for me. Install the command line tools if that does not work:
$ xcode-select --install
Good Luck!

How to install older version of Firefox on AWS (Ubuntu)?

I'm trying to use an older version of Firefox on AWS (running selenium, 55 isn't compatible) but I haven't had any luck. When I try to download the compressed older files, I get
(firefox:6186): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
/usr/bin/dbus-launch terminated abnormally without any error message
Any ways to fix this/alternate ways to download?
I faced same issue with firefox when I was running selenium project with it. I did the following things that helped me. First uninstall the firefox by using command,
sudo apt-get remove --purge firefox
Some of the old files could also be there, you need to remove them manually.
Then you can install the previous version from the link provided below which shows list of all previous versions of the firefox, version 54, works fine for selenium.
https://support.mozilla.org/en-US/kb/install-older-version-of-firefox
When you install it, Mozilla build for Firefox would be opened as a browser and you can perform selenium tests there.
Hope this helps!

How do you get pyapns (python push notification) working on a mac?

pyapns appears to be the most popular push notification package for python. However, it does not appear to work on a mac running mountain lion. I am using a mac for development.
https://github.com/samuraisam/pyapns
pyapns is an APNS provider that you install on your server and access
through XML-RPC. To install you will need Python, Twisted and
pyOpenSSL. It's also recommended to install python-epoll for best
performance (if epoll is not available, like on Mac OS X, you may want
to use another library, like py-kqueue). If you like easy_install try
(it should take care of the dependancies for you):
I try to install pyapns in my virtualen on my mac, and python-epoll sure enough does not work. The paragraph above states that you can install py-kqueue, which I have by typing in: pip install py-kqueue. No errors. But when I try to start up the server using the line: twistd -r epoll web --class=pyapns.server.APNSServer --port=7077
I received this error:
... bin/twistd: The specified reactor cannot be used, failed with error: cannot import name epoll.
See the list of available reactors with --help-reactors
Is there any hope to set up a python apns server on a mac? Thanks!
Solution is two-fold:
If you are using virtualenv, make sure that you have activated it so that step 2's package is installed in your virtualenv and not your system's python.
pip install py-kqueue
Substitute the words kqueue for epoll when you want to start pyapns, like below: epoll doesn't exist on a mac.
twistd -r kqueue web --class=pyapns.server.APNSServer --port=7077