how to specify appium to one device only - java

I am automating an android device, my target is to automate everything and keep physical maintenance to a minimum. I have two devices with USB debugging on but, when I turn the appium server on it starts running code on the wrong device.
Is there a way to programatically specify which device appium sends code to?
Or is there a way to disconnect a specific adb device through command prompt?
Any help would be greatly appreciated, this is the last step in finishing my project. Thank you in advance.

You can use the udid capability for that.
caps.setCapability("udid", "udidDevice");
You can find udidDevice using adb devices command on the terminal with both devices connected and get the one you are interested in.

Related

Android Studio can't detect my android POS Terminal [duplicate]

After installing android studio, I installed ADB as well. However, for some reason ADB doesn't detect my device. To make a note I think I have done all the basic stuff I found online, i.e.:
Set device in Developer mode and enable USB debugging
Cable works well (Android file transfer automatically opens when I connect the device)
Installed Java JDK 8
I have done 'adb kill-server', restarted my device and Mac but still not working
I'm using Android Studio 2.2 and running Mac OS X Sierra on my Laptop, and the android phone is running Android 5.0.1 (on an LG Phone)
NB: I have tried the other solutions on stack overflow but thats not the problem.
ADB (is installed) and works from the command line, but when I run :
'adb usb' command, it says 'error: no devices/emulators found'
'adb devices' command, it prints 'List of devices attached' with an empty line beneath.
I believe this is a specific issue and the general solutions to install ADB or restart doesn't work here as I have tried all that.
I have removed and reinstalled android studio, still not working.
I have removed and reinstalled adb and adb & fastboot, still not working.
I have restarted my device, disabled and re-enabled developer mode, still not working.
Obviously, I have unplugged and plugged the cable back in several times, still not working (only Android File Transfer keeps coming up)
Just in case, I have rooted my device, could that be the problem or that doesn't matter?
You basically need to set the USB mode to PTP mode instead of Media Transfer Protocol (MTP) mode.
When I connected the device via USB the USB icon and Debugging Mode Icon appeared on the status bar on the device.
If you open control center by swiping down from the top, you should see a "Media device MTP" - Tap for more USB options. Tap it and switch the mode to "Send Images (PTP)" mode and it should ask you if you want to enable USB debugging. Enable it and the device should be recognized by ADB and Android Studio now.
I just clean installed my MBP and encountered the same issue. I tried the things suggested here but nothing worked.
What I had to do to fix it was "Revoke USB debugging authorizations" from the Developer options.
Once I did that, it offered up the usual "did you want to allow debugging on this device" option, and everything was back to normal.
Go to developer options and enable USB Debugging:
Settings > More > Developer Options > Debugging > USB Debugging.
Note:
You have to enable developer mode on your phone first
I was already in USB debugging enabled state and also had switched USB configuration to PTP. It was still in always charging mode no matter what I do. I had even reinstalled all Android related stuff, tried on multiple devices to find a fix. Finally what worked for me was getting a new cable.
I had posted a question here (now marked as duplicate) since these answers didn't suffice my situation.
If anyone is still having problems, consider the cable you are using. Not all USB cables are created equal! Some will charge but not allow data transfer. See this post.
In my case, the problem was that developer mode went away after doing an Android system update. Double-check developer mode and USB debugging settings.
I tried everything on my MBP but failed to fix the issue. Finally, with the least expectation, I reset my MBP's SMC, and everything is back to normal!!!
https://support.apple.com/en-us/HT201295
Make sure no other services are trying to access the device via adb. For me, I was using chrome inspect for checking the network requests. When I closed that window studio automatically detected the device.
Yeah, this one's tricky! Enabling Developer Options on your device is just a half of the procedure. Now you need to go to:
Settings > System > Advanced > Developer Options > Revoke USB Debugging Authorizations
Also check the cable - some are just for charging, no data can pass trough.
Please use the correct USB-C cable that came with the phone/device. Also, this can happen if incompatible converter is used, but this is less likely.
Add “platform-tools” to your PATH variable by invoking the following in the Terminal (make sure to change the file path to reflect where you placed the folder “platform-tools” on your system):
echo 'export PATH=$PATH:~/SDKs/android-sdk-macosx/platform-tools/' >> ~/.bash_profile
Execute the following command to reload your bash profile (this applies the change to the PATH variable):
source ~/.bash_profile
Note: The PATH variable is the search path for commands. It is a list of directories, each separated by a colon, in which the shell looks for commands. To see what values are currently in your PATH variable, use the following:
echo $PATH
adb devices
It should return something like this (if you have one Android device attached):
List of devices attached
212304114c28b9e device
I tried all of the above and the only thing that helped me was
to change the USB port and also change the data cable.
I was actually using a converter from USB type to C type at the connecting end to mac port
I think the converter corrupted the mac port. This was for Macbook Pro
update
I also tried doing a soft reset of the SMC and worked like a charm after that.
I face the same problem with my One+ device and after trying everything mentioned above , still was not able to conenct . But finally after enabling "OTG storage" option in System , it works.
it might be different for different custom devices . so ultimately you have to look for an option which gives a notification in device when you conenct and disconenct your device with system.
This happened to me on initial setup. I noticed that Gradle sync was taking a long time, so I waited for it to fully sync, then my device magically became available!
ADB was detecting the device but AS wasn't, I went to Preferences > Build, Execut

OnePlus One not found in Android Studio on Mac

I have a strange problem while developing in Android Studio on mac and i am using OnePlus one. While debugging if a call come on my mobile adb disconnect my device and don't show it again. Help me to solve this permanently.
Only solution that i have found and which works is in following step:
Restart mac
disconnect cable from mac and OnePlus One
Kill adb server
start adb server
Revoke developer certificate and turn off developers option.
restart onePlus One
Turn on OnePlusOne and connect device with mac
Open Android Studio
Enable developer option and then enable debugging option
After I follow these steps, fingerprint dialog show and once I allow that dialog, device starts to show.
This process is time consuming. I am facing this problem on mac.
Putting the phone in airplane mode seems to have temporarily fixed the issue for me. I still need to look at the logs and figure out what is wrong, but there seems to be a bug in the latest 5.x updates for the OPO.
Are you using EasyTether? If yes, you can disable it by using the following command:
sudo kextunload /System/Library/Extensions/EasyTetherUSBEthernet.kext
If that does not work, open System Information utility and check your device manufacturer ID (Vendor ID). Copy that and paste it into your adb usb config by using
echo 0x9d17 >> ~/.android/adb_usb.ini
Then restart your macbook and mobile phone and try if it works.
There are several reasons your phone may not be getting detected properly, in my case it showed my phone in My Computers, and also asked me if I allowed my PC to debug on my phone. Yet it wasn't showing the phone in the android studio adb devices drop down menu.
All I did was, go to
Tools>Android>Enable ADB Integration
and it found my device. This is once I had installed my OPX driver that shows as a disk in My Computers and also Samsung USB driver. I'm talking about Windows here but the solution applies to Android Studio on any platform. So thought I should share.

Installing Teamviewer silently on android device from a remote location using java

I want to install the TeamViewer software automatically on client's android device remotely using java. I have researched about a number of third party tools for automatic installation of software but the problem is that each one of them needs user interaction/permission in one or the other way.
In my app I will disable the touch of the device after the user logs in and an animation will be displayed based on the real time data from the server. I want to install the software assuming that no user is present at the other end and no response should be needed to install teamviewer.(My app will not there be on Google play.)
I am very new to android development, but through my research I found that .exe file can not be installed on Android as its a Linux based OS.I was planning to keep the Application(.exe) file at server and then try to install it issuing some adb command from my code.
Can someone please tell me how is it possible? How should I proceed? Please help.
Thanks in advance for any help.
There are two way for installing an App on an Android device:
Via ADB. This requires Debugging to be enabled on the device, and the computer the Java program is executed on requires an USB connection to the device (and proper USB drivers) and the device must be "ADB-paired" with the computer if the device has at least Android 4.2. Furthermore you need ADB which is part of the Android SDK and therefore not present on a regular PC. You could ship a version of ADB with your program but ADB is platform specific (Windows, OSX, Linux, ..) therefore you would have to include multiple versions and select on.
Vis Google Play. Once the user is logged-in any app from the play store can be installed to the users's device via web interface. As the Google log-in credentials are required a user must be present to enter them.
Conclusion: What you want is nearly impossible, especially the "without user interaction" part.
You can't install a app from other app without user interactions, that would a big security problem.
The one app that can it is Google Play for obvious reasons.

ADB - how does it work?

it's clear to me that one can use ADB to run commands on connected Android device, but how does it work internally?
My assumption is that after for instance calling 'adb shell' ADB connects with some internal service running on Android device or emulator and communicates with it.
What I want to do is to connect to this service which parses ADB commands directly from device (assuming it's not connected to PC) and run ADB commands directly from device. Would it be possible?
Not as far as I know. Rooted phones can have a terminal emulator on the, but that ties directly into the phone, rather than going through the adb daemon. Depending on what you want to do, you might still be able to use the terminal emulator on a rooted phone. Check this post out: http://androidforums.com/eris-all-things-root/109607-terminal-emulators-adb-question.html
ADB is a deamon running at the native layer. It is started when the phone is started in init.rc, Androids version of init.c. ADB can take commands in Androids shell scripting language which is similar yet different to BASH.

adb cannot find my device for Android debugging. Why?

I installed Windows USB Android SDK
driver for the Android Dev Phone 1
I enabled all the debugging modes and stuff on the phone.
It even says...USB debugging connected.
When I type adb devices , it shows me only my emulator , and not my phone.
It doesn't seem to recognize my Android Phone as an adb device. Why is that?
Might be faster just to restart the adb server:
adb kill-server ; adb start-server
Or what I often use:
adb kill-server ; adb devices
When you call adb devices it automatically starts up the adb server. Then gives you the list of devices it can find. Sometimes even then it doesn't find the device right away so you may need to call adb devices a few more times.
There're many reasons which can cause the problem, try:
Turn on "USB debugging mode" in Settings->Application->Development.
Reinstall device drivers.
Restart Window/Mac.
Restart device.
To complete the other answers in case other people have this problem: I also had this problem, all those solutions did not work.
I just had to... change the USB socket in which I plugged my cable.
Actually, it took some time to find that because Windows was correctly recognizing the device. But not ADB.
Mine finally recognized the device after changed USB connection mode to "Camera (PTP)"
Settings > Storage > (upper right hand corner more options) USB computer connection.
I don't know if it's because I rooted mine.
For Samsung Note 3 specifically, you will need to switch to "Media Device USB3.0" instead of just "Media Device MTP" before the device show up on adb devices.
I had same problems and tried everything, and that worked for me,
Sometimes the problem is in the drivers; try this :
http://adbdriver.com
download the adb driver and run it, it will download the driver for your phone,

Categories

Resources