Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

running/controlling an emulator on remote server

i know this not suitable question for SO but i have nowhere else to ask hopefully i'll get a answer before mods close this question !

so I use couple of android apps on daily bases , and it's very time consuming. I want to somehow automatize the process.

The idea is to install some sort of emulator on the server, and program that emulator through some programming language to run the apps on the server when its needed.

I'm a web developer , I work with PHP, nodejs , python , not really familiar with mobile space , so I thought to ask here.

Is there any solution out there to do what I want ? I search around and found Appium but I'm not sure if it would do what I want.

Please note these apps don't have a public 'api' for me to use.

Also I only have remote access to server via 'ssh terminal', so solutions with 'GUI' dependency wont work for me.

like image 845
max Avatar asked Jan 26 '19 21:01

max


3 Answers

You can use some emulator, like Bluestacks and then run a script to run apps and then use macro tool to emulate clicks in the games or apps

check this link for the macro tool in bluestacks : https://www.bluestacks.com/blog/bluestacks-exclusives/combo-key-bluestacks-record-replay-action-single-key-en.html

Or you can write a script which uses adb commands to run and control the app.

For example. to run apps. adb shell am start -n com.android.settings/.Settings this command will open the settings app in the emulator.

to send touch events you can use : adb shell input touch <x> <Y>

adb shell input keyevent <keycode> to send keycodes
like image 70
nkalra0123 Avatar answered Nov 12 '22 23:11

nkalra0123


I'm assuming that you want to automate native Android apps.

Short answer: Appium will be good solution for you.

On your remote server you will need:

  • Android SDK and Simulator
  • Python 2.7 installed
  • Appium server/node (install using node.js npm )

With everything installed you will be able to start Appium Nodes on your server and run Appium scripts against them.

I suggest using CI server of choise for automating this process. It should make starting your test trough ssh terminal easier / 100% automated.

I never used Selenium/Appium in python, so I can't really help you with Appium tests code examples, but I'm sure there are a lot of basic tutorials for python.

like image 1
Angusiasty Avatar answered Nov 12 '22 23:11

Angusiasty


You must install AppiumServer and android sdk/simulator in the remote server. I am going to show how it can be done in java. Hope you can convert it into javascript code.

Check the ip Address of your remote server using ipconfig

Start your appium server in the remote server

>appium -a "ip address of remote server" -p 4732 --session-override

Start the emulator in the remote server.

Define and initialize DesiredCapabilities and AppiumDriver in your code like following.

AppiumDriver<MobileElement> driver;
DesiredCapabilities caps= new DesiredCapabilities();
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "android device");
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 300);
caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");
caps.setCapability("appPackage", "enter your appPackage");
caps.setCapability("appActivity", "enter your appActivity");

driver= new AndroidDriver<MobileElement>(new URL("remote server ip address" + ":4732/wd/hub"), caps);

Make sure both device are in the same network. you must get response while pinging to the remote server ip address

like image 1
Suban Dhyako Avatar answered Nov 12 '22 23:11

Suban Dhyako