I've seen that there are emulator images available for Android which can run on x86 virtual machines. I'd like to build my own x86 Android image from source, but I can't seem to find instructions online. Is it currently possible to build a custom x86 "ROM"? (not sure "ROM" is appropriate term for x86 systems, whatever)
Yes it's possible, but you still need a Linux machine to compile it (without going into a lot of troubles).
There are a lot of information on porting android to X86 platform in the net. I suggest you to start with this one: Android-x86 - Porting Android to x86 .
You can also have look at XDA forun. They do a lot of work on porting ROM's.
Regards.
Related
I have a Surface RT with Windows 10 on ARM and an unlocked secure boot but I would be curious to see if I could compile android x86 but for ARM. There are no kernel trees and device trees available for this device because it's a Windows device.
I am choosing the Android x86 project because it compiles the android build to an iso to easily install it and it's more like a linux distribution such as Ubuntu.
I searched for some documentation but it says something about a depreciated ARM emulator but nothing else: https://www.android-x86.org/documentation/customize_kernel.html
I know that android x86 is meant for x86 but before I waste my time to download the source, what can I do to actually compile it for ARM, or is it possible? Can someone get me in the right direction?
Thanks for any help!
I want to test Android Vulkan samples under Android Studio in MS WIndows 10
using this manual https://developer.android.com/ndk/guides/graphics/getting-started
I cannot do it because of the error
Device supports x86, but APK only supports armeabi-v7a
I have tried all options suggested here What is the reason for the error "Device supports x86, but APK only supports armeabi-v7a" but it does not work.
I have following Virtual Devices
Even if I use armeabi-v7a I cannot start app. And it is EXTREMLY slow.
Please help me to use clear steps to get working Vulkan samples under x86 images of Android. Thanks!
There are a couple different problems here:
First, the "device supports x86_64, x86, but APK only supports armeabi-v7a" means exactly what it sounds like: you've got an emulator that only supports 32-bit and 64-bit x86 instruction sets, but the native code in your APK is only compiled for 32-bit ARM. Emulating x86 devices is much faster since they can run in a virtual machine (the host CPU is actually executing emulator instructions directly, instead of having to translate them one by one in software). Configure your project to build native code for x86 in addition to armeabi-v7a.
Second, when using an ARM emulator, or if you fix the first problem and run on an x86 emulator, I don't think the Android emulator emulates a Vulkan-capable GPU yet. So you should be able to create a Vulkan instance, but vkEnumeratePhysicalDevices should return a count of zero available physical devices.
You don't give any details about "cannot start app": do you see anything in the log? Are you able to create an instance? Or is there some other completely unrelated problem before you even get to that point? Nobody can help you with that without more details.
I need to do a lot of android testing where the device I use has to be ARM based. While it is possible to create these devices in the default android emulator they are of course very slow on my x86 development machine.
A lot of this testing runs headless and automatically so I thought about setting up an ARM server and emulate the devices there in the hope that the performance would be better. While looking around I realized that there is nearly no information about this. Is it possible to run an android emulator (ether the one provided with the SDK or any other) on a ARM machine to get higher performance for the virtual devices?
This is actually a very good question.
Some cloud services like Amazon are providing the arm based machines. With those machines, we can run android emulators in cheap price.
Google doesn't provide the android emulator binary for arm.
But you can build those emulator binaries from AOSP. You have to do some work such as editing of cross-compile build files, adding target directories and building related third party libraries in arm architecture.
If you need any further information, I would attach detailed technical tips or step-by-step manuals.
Okey, BlueStacks is a bit slow on my pc, so I read somewhere in the internet that Genymotion is a bit faster then BlueStacks. Then I downloaded Genymotion and installed it. And after a lot of complex steps I finally understood that I need ARM translation and Google app for playing Android games. Now, I can understand that Google app is needed for getting the play store. But I am still in the dark about the 'ARM translation'. Why is it needed? what does it do? what happens if I don't use the ARM translation? And lastly, what does ARM stands for?
-Thanks in advance.
ARM is a processor architecture, you can read more about it here.
Android apps are sometimes designed with X86 architecture and sometimes with ARM.
You have to install the ARM translation in order to install on your emulator apps that use ARM architecture.
It's not a must have, but a lot of apps won't work without it.
Android games generally make use of OpenGL ES which is built from the ground up to work specifically with an ARM SoC. The Android NDK itself allows game developers to optimize their software by using C/C++ and even ARM assembly code.
The GenyMotion emulators are designed to work around an Intel x86 / x64 architecture, which is why they are faster than the Android emulators. But because of that, and because they have now decided to forgo ARM translation, they cannot run games.
A standard Android emulator actually compiles Java source to dex, and dex to ARM assembly, and these ARM instructions are run on an ARM emulation called QEMU. This makes the Android emulator incredibly slow, as it is in effect running an emulation of an ARM processor on top of an Intel-Windows machine. But it is able to run games.
The Android emulators emulate, while GenyMotion is more effectively a simulation.
Can anybody tell me if it is possible to execute programs using arm assembly language in the simulators?
It's not possible in the iPhone simulator because it's a i386 application without the capability to emulate another processor. As a consequence, you have to compile your iPhone app to i386 code in order to run it in the simulator.
(I can't tell you about Android.)
The Android emulator, based on QEMU, provides full ARMv5TE emulation. ARMv6/v7, VFP, and NEON are present in the current version but I think support for those is still a little flaky.
The Android SDK is a free download, so grab a copy and see if it does what you need.
UPDATE: Full ARMv7-A support is available and stable.