Can't debug native Android apps in Genymotion via Eclipse - eclipse

I've built my application as an x86 native app, and I've ran it on Genymotion. The problem occurs when I try to debug from Eclipse. In the console view, I get the age old:
gdbserver output:
run-as: exec failed for lib/gdbserver Error:No such file or directory
Verify if the application was built with NDK_DEBUG=1
It all works fine with ARM builds though. I checked that the x86 gdbserver is getting included in my .apk lib/x86/gdbserver. I've also read that the x86 versions of android include a gdbserver locally anyway, so not sure what the point of all that is.
I've been able to manually attach the included gdbserver using adb shell, and then get Eclipse to attach to it remotely using this is a starting point: How to get ndk-gdb working on Android?
It doesn't mention anything about x86 or Genymotion though. Unfortunately, it's tedious, and it's seemingly useless since it doesn't load any symbols (though that's probably because of my ignorance.)
Is there any guidance for making this setup, using Eclipse and Genymotion to debug native apps, work?

Sadly, this is due to a bug in Genymotion v2.2
It will be fixed on our next release (I work for Genymotion).
You are right, gdbserver is not deployed from the apk, and this is why it doesn't work.
You can find here a patch to apply that will fix this apk deployment bug for Genymotion KitKat devices created with Genymotion 2.2: native-debug-fix.kitkat.zip
Warning this patch is only for:
Kitkat (Android 4.4.2) devices
created with genymotion v2.2
Don't apply the patch on other devices, it will brake things.
to apply the patch, simply drag n'drop the zip file on genymotion.

Related

Freeze on Copying APK file

I created a new empty project, switched platform to Android and started Build and Run. But when it comes to "Copying APK File to device" it just freezes and I have to restart Unity.
I installed Android SDK & NDK tools just before that (through Unity Hub). Android Build Support was installed by me manually a while ago so it was visible as installed in Add Modules window. I did not do any changes to the project. The most interesting thing is that the apk is built in my Builds folder. Not sure if it works though.
I am using Unity 2019.1.0f2. The device Android version is 9.0 (API level 28) and the minimum API set in Player is 16, so the problem should not be with API.
Does anyone know possible reasons for it?
Try to turn off the following setting on your android device.
Settings -> Developer options -> Monitor apps installed by ADB
This setting(if turned on) will ask a verrification if you want to install the app. It feels like this cuts off the connection with unity which causes it to get stuck.
Unplugging and replugging the device seems to work aswell. In case of big projects this is anoying tho since if you are to quick it will just say it lost connection and it will ask if you want to reconnect, which in turn causes the same problem.
This is the only answer that worked for me:
https://answers.unity.com/questions/1248123/build-run-apk-freezes-on-pushing-content-only-one.html
In short, Player settings -> Publishing settings -> Split application binary
First of I would ask you on what computer did you run this on? (performance wise)
Second you can just copy the .apk file to the phone and install it there. If you got to where it prompts for copying to android your apk file is fine and built.

Cordova loading app into android emulator

I am totally new to Cordova, but now I have installed Cordova with NPM and installed Android SDK and set up an AVD which seems to work perfectly, until I want to emulate my project. Where the actual app for some reason is not loaded into the emulator.
The following action is done:
marvin:HelloWorld$ cordova -d emulate android
cordova library for "android" already exists. No need to download. Continuing.
Wrote out Android application name to "HelloWorld"
Wrote out Android package name to "com.example.hello"
Calling plugman.prepare for platform "android"
Preparing android project...
Processing configuration changes for plugins.
Iterating over installed plugins: []
Writing out cordova_plugins.js...
Running on emulator for platform "android" via command ""/home/marvin/Development/projects/HelloWorld/platforms/android/cordova/run" --emulator" (output to follow)...
Then it start Android emulator up, but the app is not there. Does anybody have a suggestion to fix this issue, so I am capable of actually testing in my emulator?
Thank you in advance.
I just had the same problem, and I was missing PATH to platform-tools in android sdk folder, after I added it everything was in place.
I had the same problem as well; I could run the cordova emulate android command just fine, and the emulator would eventually start up and function, however, the test app was never installed on the device. I was not getting any errors from the Cordova CLI or the console or anything.
I found that there is a bug report about this issue here: https://issues.apache.org/jira/browse/CB-4285
Two solutions have been found for this issue:
1. Make sure you are using an Oracle JDK and not an IBM JDK, and
2. Make sure the AVD that emulate starts up has a min-target-sdk set to API 10 (Android 2.3.3) or higher. (This was my problem.)
Sometimes it works deleting the previously installed version of the app in the emulator. For this you could also launch it with the option "Wipe user data" checked.
Just for the record, none of the other solutions worked for me.
I had the same issue. Following solved it for me.
Make sure that API level of your AVD is greater than minSdkVersion specified in config.xml specified in your cordova app.
If anyone still having this issue:
I had a same problem with device being offline.
if ddms is running it looks after connected devices.
adb kill server
and than run ddms
Also make sure your app id doesn't begin with a number or any other character like "_". For example, if your app id is com.4company.MyApp or com._company.MyApp it just won't load on the emulator. The first one is because Java doesn't allow names beginning with a number, and the second one I guess it's a Cordova thing.
You should also use adb logcat to show the emulator errors on the command line.
For me, the app was not starting up because I had a second emulator running in the background. Uninstalling bluestacks (android emulator for windows) fixed the issue in my case. Running "adb logcat" should tell you if you have multiple emulators running.
I just had the same problem, and It was my emulator device that was with the API 15. Just updated to API 17 and the problem solved.

Unable to launch Android emulator from Eclipse/Linux

I'm using Eclipse Juno (build 20120920-0800) on openSUSE 12.2 to code Android applications.
I have installed the SDK by uncompressing it into my home directory (if I install the SDK via YaST package I can't download stuff unless I'm root). I installed ADT from Eclipse Marketplace, configured the path of the SDK and configured a couple of emulator configurations.
I can run and debug fine on my phone, and I guess the same applies to my tablet even if I haven't tried yet.
The real problem is that I can't run the emulator. Clicking on the bacarozzo debug icon prompts me to run the application on the device but doesn't show me available emulators.
If I open the device manager I'm shown with the virtual devices I created but I can't just start any. The progress bar reaches the end, I see no emulator screen and if I try to delete the emulator I'm warned that the instance is running... (OK in the screenshot there is only one, I already managed to delete the other)
I urge to test some GUI features in an outdated version of Android. I have done all the field tests of the business logic code in my program on a JB device and I know for sure that code works on any device.
Now I only need to be backward-compatible with preferences and layouts.
How can I start the emulator in Linux?
Just by luck I managed to run the emulator from console
djechelon#RAYNOR:~/android-sdk-linux/tools> ./emulator-arm -avd Emulator_cell
It came to life and Eclipse debug is detecting it as active device

Android emulator shows nothing except black screen and adb devices shows "device offline"

I am just trying to start development in Android.
So, the problem is that when I try to launch an emulator by issuing the command emulator #A2, an emulator comes up on the screen. But even after waiting for as long as 2-3 hrs, all it shows is a black screen. Not even the Android home screen or the Android logo. Just a black screen. And while initially "adb devices" shows the emulator as offline.after 2-3 minutes the list of attached devices becomes blank.
I searched all over net and tried all the steps mentioned there like kill and restart adb, install java/android in a directory without spaces, but to no avail.
My Jdk and Android installations are in following folders:
C:\Java32BitInstallation
C:\AndroidSdkInstallation
Here's the list of stuff I have downloaded/installed for it:
Android SDK Tools, revision 13
Android SDK platforms tools, revision 10
SDK platform Android 4.0.3, API 15, revsion 1
Jdk jdk-7u3-windows-i586
In my path variable, I have added *C:\AndroidSdkInstallation\android-sdk\platform-tools;C:\AndroidSdkInstallation\android-sdk\tools;C:\Java32BitInstallation;C:\Java32BitInstallation\bin*
Also after reading somewhere from net I have added JAVA_HOME variable with its value as C:\Java32BitInstallation\ But still no use.
I have both IntelliJ and Eclipse installed on my system. But since for starting the emulator, I am not using any of these, I don't suspect any foul play with these.
I have been trying for past 10-12 days and have not been able to start the emulator, let alone write my first "Hello world" program.
Additional notes:
My system is a Windows 7 (64 bit) machine. Earlier I had installed 64 bit version of jdk, but the problem was present that time too. Now after searching on internet, I uninstalled that and installed 32 bit version of Java. But, again no use. One thing, though, this 32 bit version of Java (jdk 7 update 3), first install jre as part of jdk installation and then installs jre 7. So now I have 2 folders: jre and jre7 in the C:\Java32BitInstallation directory. Could this have to do anything with my emulator not turning up. Do I need to specify additional environment variables or modify the existing one?
BTW, did I mention the logcat shows nothing.
Update 25.07.2018:
The latest Android Studio version does not have this option anymore.
If the problem persists try to switch between the values of the "Emulated Performance" dropdown in the Verify Configuration dialogue (if available) or refer to the Configure Emulator graphics rendering and hardware acceleration.
Update 26.02.2014:
There are two hints in the Configuring Graphics Acceleration chapter from developer.android.com.
Caution: As of SDK Tools Revision 17, the graphics acceleration feature for the emulator is experimental; be alert for incompatibilities and errors when using this feature.
and
Start the AVD Manager and create a new AVD with the Target value of Android 4.0.3 (API Level 15), revision 3 or higher.
So Android 4.0.3 (API Level 15) seems to be the minimum requirement for graphics acceleration.
Original answer
I have had the same issue with the latest Android SDK.
I simply deactivated the checkbox "Use Host GPU" within the settings of the virtual device and it started working again.
The "Use Host GPU" does only work for me with Android 4.2 as "Target".
I have recently the same issue in emulator, Nexus 5 (Android O). I have go to Android Virtual Device Manager and Wipe User Data and it solved my Problem.
I had issues with getting the larger devices to emulate (Nexus7 and 10), while the phone sized emulators worked great. Would just keep getting a black screen with nothing for hours with the tablets. What helped was actually the OPPOSITE of what most people here are recommending: after setting the tick box for 'Use Host GPU' and setting the target to the highest android (4.4.2 at the time of this writing) the 7 and 10 work as expected!
Have you tried the power button :) ... it really worked for me. Actually emulator saves the device state before closing so at the last run if you switched off the device & closed the emulator then in the next run it will load previous state & display switched off phone aka blank screen. Although there might be many other causes of this issue.
Checking "Wipe user data" in the Launch Options fixed it for me.
Go to Android Virtual Device Manager->Select your device->Start->Check "Wipe user data"->Launch
Mac Users: Unfortunately, if you have an older Mac (late 2009 for example) and are using Yosemite, you cannot use HAXM for 64 bit architecture. According to the release notes on HAXM:
HAXM driver does not support emulating a 64 bit system image on Intel systems based on Core microarchitecture (Core, Core2 Duo etc.). All systems based on Nehalem and beyond are supported. (Corei3, Core i5 and Core i7 machines).
I spent a day trying to figure this problem out when I came upon this quote. The only thing that works is to use the non-x86 version of the latest OS (e.g. Lollipop Android 5.0.1 armeabi-v7a) in your AVD
How i solved the issue.. Open AVD manager, CLick on the drop-down arrow:
select >> wipe data after that u can select >> cold boot now..
It worked for me
Here is how i got it solved :
I ran the emulator with following command :
sudo /home/code/Android/Sdk/tools/emulator -avd Nexus_S_API_21 -netspeed full -netdelay none -debug-init -logcat '*:v'
and received the following in the output :
NAND: could not write file /tmp/android-code/TMP7.tmp, No space left on device. (similar error, could not reproduce it)
So, i just freed up some disk space from my /home directory in ubuntu (for windows free the C: drive space) and it then booted smoothly.
Do factory reset in "Android Device Manager".
In newer versions of Android Studio, this is called "Wipe Data", and it is in the right-click menu for the device in the virtual device manager.
Also had this issue out of the blue. Android studio was taking up 100% of CPU and in expo I had the following error:
Couldn't start project on Android: Error running adb: This computer is not authorized to debug the device. Please follow the instructions here to enable USB debugging: https://developer.android.com/studio/run/device.html#developer-device-options. If you are using Genymotion go to Settings -> ADB, select "Use custom Android SDK tools", and point it at your Android SDK directory.
Cold boot fixed it for me, like boltup_im_coding's answer. You can also cold boot this way if it's already running (with the black screen).
Make sure that you've installed the latest HAXM revision. I had the same blank screen problem with version 1.0.1 while 1.0.8 was already available. The installer can be downloaded via the SDK tools, to actually install the module you would have to execute
android-sdk-directory\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm.exe
I changed it to always "cold boot" to fix my problem. Prior to this, when I ran adb devices it always showed as offline.
Had this issue on my Nexus 7,Nexus 10 & Pixel as well that means in all the emulators.
After days of struggling with this issue,
I figured it out finally.
Well, there are a lot of answers above which may work or may not for you because their configuration may vary slightly than yours.
I'll tell you my solution:
When creating those emulators, I checked Hardware - GLES 2.0 in Graphics for better performance.
And for me it was the issue.
If you've done the same then,
Go to AVD Manager -> Select your emulator -> Click on Edit configuration (in Actions column marked as pencil) -> in Emulated performance - Graphics -> Select Software - GLES 2.0.
Then click on Show Advanced Settings -> Set none for both Front and Back camera and hit Finish.
Now select your emulator in AVD Manager and click on Dropdown arrow in Actions column -> select Cold Boot Now.
And yay you're ready to go 😀
Helped for me (windows 10, intel):
Disable Hyper-V in windows
Uninstall HAXM ( "Intel Hardware Accelrated ..." in control panel)
reboot
Install HAXM using android studio (Settings -> Android SDK -> SDK Tools -> Intel x86 Emulator Accelerator (HAXM Installer) -> install)
Run emulator (Also you may try Wipe VD data/Cold boot VD)
By the sound of it you have a misconfigured device. If you do it will never start and never show anything in Logcat.
I'd recommend creating a new device using one of the default "Device Definitions" available in the AVD Manager. It's as easy as highlighting the device type you want in the "Device Definitions" tab and clicking the "Create AVD..." button, then filling out a few details. I'd start by adjusting "Internal Storage" to around 8GB and (maybe) an "SD Card" of 2GB while leaving everything else the same. Try starting the device and if you see "Android" pop up onscreen you're running. The first boot usually takes awhile so just hang on and watch Logcat for any issues (the "DDMS" perspective helps here).
If you still see a black screen with a default device definition you've got problems elsewhere that are causing the device to fail. Digging through logs may be your only chance if that's the case. You can always try re-downloading the ADT and re-installing the SDKs if nothing else works.
The goal here is to get you up and running with a (very) basic device, so don't shoot for uber impressive specs at this point, just shoot for trying to make it run. Once that happens try adjusting the settings one-by-one until you have it spec'd out the way you like. Just keep in mind that the emulator has its limitations and its no substitute for a real device (Although it works most of the time ;)
This is a known bug if you selected "Use host GPU" option while creating AVD.
https://code.google.com/p/android/issues/detail?id=28614
Uncheck the option and it should work!
Just try to set CPU/ABI on "Intel Atom (x86)" and deactivate the checkbox "Use Host GPU".
The Problems associated with the Black window of the emulator:
Happens when a new windows is installed. Problem associated with graphics of the windows is on the CD of windows .You have to Update windows and follow the following steps.
If Emulated Performance Graphics is (Software GLES then select it to-->Automatic)
Or
If Emulated Performance Graphics is (Automatic then select it to-->Software GLES)
this alternation can solve this problem.
I was having this issue on my Mac. When you create the device if you change "Graphics" from "Automatic" to "Software" it fixes the issue, or it least it did for me.
The following fix worked for me:
Locate the AVD folder in ~/.android/avd
Open config.ini
Replace the following settings with these values:
hw.gpu.enabled=yes
hw.gpu.mode=on
Save and close the file
Do not open the AVD settings screen within Android Studio or it will revert the above settings
Start the emulator
Thanks to Sunsugh Park for providing the fix.
I have reported this to Google at Black screen starting API 15. Please star the issue to get them to fix it.
Edit
Actually, while the emulator booted ok, it crashed after opening an app. So the emulator team must have disabled hardware graphics for a reason. Unfortunately, it appears to be impossible to get the emulator to work.
I had the same problem on API 28, and the fix turned out to be as below;
Enabling Skia rendering for Android UI
When using images for API 27 or later, the emulator can render the Android UI with Skia, which can render more smoothly and efficiently.
To enable Skia rendering, use the following commands in adb shell:
su
setprop debug.hwui.renderer skiagl
stop
start
https://developer.android.com/studio/run/emulator-acceleration#accel-graphics
I too got the same problem. When i changed the Eclipse from EE to Eclipse Classic it worked fine. in Win professional 64Bit.
Have a try it may work for you too..
For a workaround try Android 4.0.3 (API 15) with the Intel Atom (x86) image. I could capture DDMS screenshots with both "use host gpu" and HAXM enabled. Only this combination worked for me.
I also had the same problem. I figured out that the HAXM hardware accelerator was recently updated but not reinstalled since the update manager just updates the installer package which get saved to your hard drive. You will need to remove HAXM and then run that installer package to complete the update. Usualy this gets installed into ANDROID-SDK-ROOT\android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager. Where ANDROID-SDK-ROOT is the location where your android sdk is located.
For me, I had to turned off both front and back camera. Hope this helps!
I use Microsoft's lightning fast Android Emulators utilizing Hyper-V, and I had the same black screen for every Android emulator that I created no matter how I set the GPU Mode (auto, host, mesa, angle, swiftshader, off). Though my situation is apparently different form that of the OP, I thought it might be useful for those using Microsoft Android emulators and coming here after searching "android emulator black screen".
The solution in my case is updating all the Android tools:
Visual Studio > Tools > Android > Android SDK Manager > Tools
As of today (2019-02-01), Android emulators would have this black screen problem if you have a fresh install of Visual Studio 2017. VS shows notifications automatically for updates of NuGet packages, extension tools, etc., but NOT for Android tool updates. You have to check and update them manually.
I've managed to launch and debug an Android testing application on the Android emulator through Delphi.
I have Windows 7 64 bit, 4GB RAM, a dual core processor at 3GHz and Delphi XE 5.
Below is a link that I've prepared in a hurry for my colleagues at work but I will make it better by the first chance:
Debug Android Apps with Delphi
Forgive my English language but I am not a native English speaker. I hope you will find this small tutorial
I was having this problem after I got the blue screen of death while running my emulator. Here's my solution (for Windows at least). My solution is too completely re-install the AVD. The problem with the normal un-installation process for Android Studio is that it doesn't remove everything, so if your AVD files are corrupted, they will remain corrupted on re-install.
In order to fix this, I deleted two directories:
C:\Users\(My Username)\.Android
and
C:\Users\(My Username)\.AndroidStudio3.1
Then I re-ran in the installer.
I think this is the most foolproof solution if your emulator was previously working because it forces a complete refresh of the AVD component of Android Studio.
Another source of error could be the length of the PATH system variable (on Windows systems). Running intel based images with a PATH variable longer than 2047 characters, seems to pass an empty value of this variable to the console / emulator, so it cannot start correctly.
Here is an article describing this behaviour:
https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable
I had the same problem. Reducing the total length of this system variable to 1354 chars by removing unused / non-existent paths fixed it for me.
I had the same problem. Here's my solution (for Mac OS). I just downgrade the version of the Android Emulator (from 28.0.3 to 27.3.8). Here is a detailed instruction how to do it.

Running directx SDK samples on a Windows Mobile 6.1 device

I tried to run the directx samples from ..\Windows Mobile 6 SDK\Samples\PocketPC\CPP\win32\directx\d3dm\tutorials on a Samsung Omnia and on the emulator and it doesn't work because of a deployment error.
I am using Microsoft Visual Studio 2008 and have installed Windows Mobile SDK Standard and Professional refresh.
The device is correctly plugged in and set up for active sync (I know this because other samples work, also a creating Win32 smart device application and running it works).
When I try to run a directx sample application it compiles without errors but the message:
" There were deployment errors, Continue? Yes/No" appears
If I manually copy the application from the debug folder to the device and run it from there, it works.
The same deployment error message appears if I try it on an emulator. Other applications are deploying successfully.
Is there any way to make the deployment work? Maybe there is an obscure option I need to set...
What I do is:
Connect the Mobile device to the PC,
Open Visual Studio 2008,
Open a directx sample project,
Click Run (in Debug or Release mode).
The problem with the deployment is that the file msvcr80.dll could not be found.
It was specified at the deployment options as an additional file "Project->Properties->Configuration Properties->Deployment" then "General->Additional files"
with the paths msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_WINDOWS%|0;
Removing it makes the deployment successful. I have only tested this on a Windows Mobile 6.1 device and with the D3DM reference driver on an WM6.1/WM6 emulator.
What I haven't figured out is where does $(BINDIR)\$(INSTRUCTIONSET) point to.
Also I don't know why msvcr80.dll is in the addition files if it is not actually needed.
Is there actually a msvcr80.dll compiled for Windows Mobile platform on an ARM cpu?
I was able to resolve this issue after doing some low-level Sysinternals Debugging. It was trying to deploy NETCFv35.Messages.EN.cab to the device and in my case it was deleted for some reason. Re-installing .NET CF fixed the issue for me. Wish VS 2008 said what file was missing instead of a generic message. Hope this helps you too.