Importing an Android phone image to an emulator - android

Is there a way to take an image of an android system running on phone and run it on emulator?
I have a client with a certain bug on his phone and I want to be able to take a snapshot or an image of the Android and run it on the emulator to debug it freely without the need to take the phone from the client cause the problem seems to happen only on his phone.

You can't do what you want for a couple reasons. For one, getting the ROM image off the phone wouldn't be a trivial matter. In fact, I can't really think of a way to do it at all. Unless this is a Nexus phone or something where the manufacturer has made the images available for download, manufacturers generally don't want you mucking about with system images.
The more important reason is that the software running on a phone expects to be conntected to the physical hardware of the phone: the processor and chipset, the GPU, all the input and output devices, sensors, and so forth. The ROM image has device drivers that talk to all of that. For that image to work in an emulator, the emulator would have to emulate all of those devices well enough to fool the device drivers, which is a very complex thing, and that environment doesn't exist anywhere -- even manufacturers don't emulate their hardware to that extent when developing it. Much of that hardware and device driver environment is manufacturer-proprietary, so it would be impossible (or legally difficult) for someone other than the manufacturer to make that possible.
The Android emulator has a specific kernel image with device drivers tuned to its software emulation environment; what it's got is designed specifically for that environment. The other side of the equation is also true: you couldn't take an emulator system image and get it running on a physical device.

In your case, I would suggest you to upload your apk file to testfairy, then you can have the option to trace user's activity with your app, and it also have an error log that might even more useful.

Related

How to lower android emulator performance for testing

Is there any way to lower android emulator performance so I can see what will happen when a user with slow device uses my application?
You can find different cellular networks in emulator settings, such as Full, LTE, EDGE, etc. The signal strength can also be changed.
Changing that would give you an idea of how your app behaves.
You may also change some emulator GPU or RAM settings (-gpu <value>, -no-accel, -lowram, etc.) and use ARM images instead of x86 to force slower emulation but their help understanding how you app experience would be on a slower device might be limited.
Finally, you can also pass options to qemu (see the list running emulator -qemu -h).

Why does Genymotion insist upon OpenGL support when Virtual Box doesn't, and how to work around?

I am aware of Genymotion openGL error stack overflow question.
I am attempting to run Genymotion on a Windows 10 system, but the graphics adapter is Intel G45/G43 Express Chipset WDDM1.1 and the driver supplied does not support OpenGL and Intel appear to have no interest in delivering a driver that does for Windows 10. I understand that officially this combination is not supported.
But here's the thing: I can start a Genymotion VM fine from Virtual Box, and it appears to work (almost) perfectly, as far as I can tell.
Certainly I don't see any problem with the graphics.
This must be using some (probably Virtual Box provided) software implementation of OpenGL.
However, when I try to start the same phone VM from the Genymotion console, or from the Genymotion button inside Android Studio, I get the error dialog-box in the linked question above.
My question is: Why is Genymotion insisting that there is OpenGL support from the real physical display driver? And of course, if its for a quality reason only (ie: sub-optimal user experience otherwise) is there any way to disable this check?
The reason this matters is that Android Studio does not list the Virtual Box started phone VM as somewhere an application can be run upon. I suspect that when Genymotion runs a phone VM, they set up something that the Android Studio integration needs, that simply running from Virtual Box doesn't provide.
In addition, I can't circumvent the Android Studio integration by deploying to a phone VM using the gmtool device install file.apk command bundled with Genymotion because this is a paid license feature. As you can imagine I am somewhat reluctant to purchase such a license when I know I am running in an unsupported configuration.
Purchasing new hardware also isn't an option for me in the short term.
EDIT: The justification for this question has since evaporated. Although I can't deploy using Android Studio or gmtool.exe, I have managed to deploy by using the phone web browser to fetch the .apk file. The gotcha here is that the web server must supply a Content-Length header or the download will fail. So I now have a workable solution.
{{{ Andy
I'm part of the Genymotion team. That's an interesting question. The answer is: yes, we ask for OpenGL drivers for performance reasons. Without this, the whole Android rendering would be handle by the CPU (as soft rendering) which is not fast enough to allow a real usage of the devices, with a seamless user experience, particularly since 4.3. If you run a 4.2.2 image from VirtualBox, you'll see the UI inside the window but the rendering will be very laggy.
As you maybe already noticed, running the Genymotion devices from VirtualBox works only for images up to 4.2.2 (released 3 years ago). The other image will show only a console window. And to be honest, you should more consider it as a side effect than a real feature. This behaviour could disappear on a future release for any reason. And there is no way to disable this check.
As you mentioned, this configuration is really weird and exceptional. As far as I know, we don't plan to support these kind of configuration and I don't see any real viable solution to make it work properly.
Also, to explain the problem you encountered with Android Studio. When a Genymotion device start, it gets a local IP. This IP can be used to connect it to adb. Then it is possible to interact with the device like with any other Android device. This is the tools used by your IDE (and (m)any other tools communicating with Android devices.
Usually, the Genymotion app does this for you, by connecting the newly started device to adb. But you can do it yourself by running adb connect <DEVICE_IP>:5555. Just be careful because this connection could not be permanent and you should have to run this command regularly in some situations.
I hope this answer will help.
Cheers.

Android Tablet is restarting by itself

I have a custom android tablet and we have created an application which is used for home automation.I have installed the application in it and it works fine. I got the comments from the client saying that the tablet restarts by itself at night. I tried to catch the log by connecting it to eclipse but it didnt happend here. Will the tablet restart by itself under any circumstances ? , The tablet is a samsung ARM with 512mb ram and 4gb sdcard in it which runs on android version 2.2.
You have not provided any code, which leads me to assume the following. Unless you have the permission of PowerManager, you app has no control over the device's off/on state.
You also mentioned, on testing, you were not able to pinpoint the issue that the client talked about. This is very important information, and it helps strengthen my conclusion. Again, if the above criterion is correct (you don't have powermanager) then, it could be the clients tablet is just messed up...
The reebooting is actually a common problem:
http://forums.androidcentral.com/samsung-galaxy-tab-pro-8-4/453390-why-my-tablet-randomly-rebooting-resetting.html
Here, user B. Diddy states:
It's hard to say. Random reboots can happen because of problems with
the firmware, but can also be due to some app you installed that is
making the system unstable, or perhaps some bad bit of data that is in
the system cache. A corrupt SD card can also cause problems. Here are
some things you can try:
Unmount your SD card in Settings>Storage, remove it, and reboot. Use the tablet for a while (like a few days) without the SD card and
see if the random reboots recur. If they don't, plug it back in again,
and see if the reboots start again.
Boot into Safe Mode, which temporarily disables all 3rd party apps: Safe mode: Samsung Galaxy Tab 4 | T-Mobile Support. (I couldn't find
steps specifically for the Tab Pro, so I'm assuming the steps for the
Tab 4 are the same.) This might not be an effective troubleshooting
method if the random reboots don't occur very often, because it's hard
to expect anyone to use their tablet for several days in Safe Mode,
thus being unable to access any of the 3rd party apps you installed.
Boot into Recovery Mode and wipe the cache partition, which doesn't erase any personal data. Follow the steps in this video, and make sure
you select Wipe Cache Partition, and not Wipe Data/Factory Reset.
So, let me know if your app uses the PowerManager permission. If it doesn't you're good to go, and it is probably a faulty tablet.
Ruchir

Android development with no screen

I have a hobby android app idea that basically just uses Android's sensors and logs them long term for several days (external battery). The sensors needed are in $200 phones, and I can get ones for under $100 if the screen doesnt work.
My question is, is it pretty easy to make an app that starts and loads via debugging, keeps running when disconnected and when I connect I can extract the log file, or would this so be difficult I would be ahead just to spend the extra $100?
As mentioned, turning on USB debugging without the screen isn't possible. You can't enable USB debugging over USB for security reasons, so your only option would be to use hardware commands to put the device in firmware download mode (presumably it will have a way to do that), then load a custom OS which allows USB debugging by default.
Personally I think that's more than $100 worth of work, so I'd just go with the working device. Then you can use it for other stuff down the line.
Alternately, you can probably get a replacement screen for not too much, and for most devices changing the screen is relatively easy. I'd look into that option as well.
The first barrier you may find is that you must activate the Developer Options in the settings and the USB Debugging. And when you connect to the computer, you must accept that cumputer as the Debugger.
I don't know if it's possible to do it without a working screen.
App will keep running & yes you can can extract the log file when connecting again.
But the problem is in the first step. if your screen if not working, then how would you add your workstation as a trusted device in your "display not working device". I doubt if there is such way, because we need to do several things like switching on developer options, usb debugging etc.
I hope you got your answer.

Debugging directly on the device

I don't expect you to correct my code, since it should be working, at least works on emulator. Unfortunately gives different output on the devices. My question is:
How to debug in such cases, when the device is not working as the emulator, and what could cause that (device model, a custom ROM?)
I heard some rumors some time ago, about possibility using the device instead an emulator somehow connected to the SDK. Could you also confirm or deny that?
You'll find it's not uncommon to find little quirks between devices. Many developers will have several physical devices to test their software on.
You can find information on using a physical device for debugging (including using it inside Eclipse, just as you would the emulator) on the Android website: http://developer.android.com/guide/developing/device.html
Yes you can do that. Just put your device into debugging mode, and connect it to the computer with the micro-usb port on the device. You will also need to download the drivers from the manufactures website.

Categories

Resources