What is Android mini_emulator image? - android-source

When building Android,
lunch
possible images are:
...
5. aosp_x86-eng
6. aosp_x86_64-eng
...
16. mini_emulator_x86-userdebug
17. mini_emulator_x86_64-userdebug
...
What is exactly mini_emulator? What is the difference between mini_emulator and aosp_x86?

You can find the configurations here:
build/make/target/product/aosp_x86.mk
build/make/target/product/aosp_x86_64.mk
device/generic/mini-emulator-x86/mini_emulator_x86.mk
device/generic/mini-emulator-x86/mini_emulator_x86_64.mk
The names of these configurations mean:
aosp means a full-featured Android. Sometimes also refered to as Generic System Images.
mini means a reduced Android.
emulator means that this Android is meant to be run in the qemu-emulator.
x86 and x86_64 describe the architecture.
eng means
Development configuration with additional debugging tools
userdebug means
Like user but with root access and debug capability; preferred for debugging

Related

Do flutter compile its code to ARM binaries?

I read somewhere that Flutter compiles its code to ARM binaries. These ARM binaries can be understood by both ios and android and thats how flutter achieves cross-platform. If so where can we see ARM binaries? Are APK and ARM binary the same?
Can someone share some more details on it?
Here's an explanation about the comparison of dart's compiled binaries and android's apk. The page also has explanation about iOS platform compilation with Flutter. This paragraph also talks about how the Flutter VM is used, just in case you wanted to know about the JIT compiler. https://docs.flutter.dev/resources/faq#run-android
The engine’s C and C++ code are compiled with Android’s NDK. The Dart
code (both the SDK’s and yours) are ahead-of-time (AOT) compiled into
native, ARM, and x86 libraries. Those libraries are included in a
“runner” Android project, and the whole thing is built into an .apk.
When launched, the app loads the Flutter library. Any rendering,
input, or event handling, and so on, is delegated to the compiled
Flutter and app code. This is similar to the way many game engines
work.
During debug mode, Flutter uses a virtual machine (VM) to run its code
in order to enable stateful hot reload, a feature that lets you make
changes to your running code without recompilation. You’ll see a
“debug” banner in the top right-hand corner of your app when running
in this mode, to remind you that performance is not characteristic of
the finished release app.

Generate HarmonyOS (Huawei) build from Flutter project

I am working on one Flutter project. In which, We want to generate builds of Android, iOS, and HarmonyOS (Huawei). But I am not sure does Flutter supports this OS or not. I went through some of the stuff on the internet but was unable to figure out how to generate and what kind of commands were needed. Here, Anyone has previously generated HarmonyOS compatible build from the Flutter project. Please share your thoughts.
For now it is not possible directly from Flutter. Because of the change in architecture brought by Huawei with HarmonyOS it is not anymore an "Android device" and it doesn't run "Android applications".
Now what you can call "native HarmonyOS applications" are *.app files (not *.apk or *.aab)
Most recent answer on Quora to:
Will Harmony OS run Android apps?
Gives the following response:
Answered Jun 4, 2021 by Mahdi Parastech, Software Engineer
Nope, because:
The structure of the APIs are different.
Hongmeng (HarmonyOS) apps are in *.app, Android apps are *.apk
The structure of pages (activities) are different, Hongmeng uses some additional json files and puts pages inside *.har files.
Hongmeng uses Javascript too, and that's the only option in Wearable Hongmeng devices, but Android apps are just written in Java.
source
Apparently you should be able to migrate your native android application to HarmonyOS by using their IDE but the thing is that Flutter was not build for this architecture.
Except if the Flutter team decides for some reason to support HarmonyOS I don't think it will be possible to develop HarmonyOS applications by using Flutter.

Unity aab not compliant with the Google Play 64-bit requirement

I have a Unity project that I'm switching from APKs to AABs (app bundles). Previously, when I was building it as an APK, the Google Play Console told me the APK was 64-bit compliant.
Now that I'm building an aab, I'm getting the warning:
This release is not compliant with the Google Play 64-bit requirement.
The following APKs or App Bundles are available to 64-bit devices, but
they only have 32-bit native code
I have both ARM7 and ARM64 architectures set.
I am excluding x86.
When I open the .aab in an archive viewer, the lib folder has all of
the .so's for both arm64-v8a and armabi-v7a.
I'm using IL2CPP, .NET 4.x
I'm using Unity 2018.3.7f1
My ndk version is 16b
My
Android Studio is up to 3.4.2 and gradle is 3.2
A lot of similar threads here talk about following the "Learn more" links, which I've done. I had already done all of the work to get my app 64-bit compliant before switching to app bundles.
Other threads talk about Android Studio solutions, which I can't use because my automated build process involves building with Unity from command line, so it has to be Unity configurations or bust.
My expectation was the app bundles were supposed to be the hot new way to let Google build better APKs for you, but it seems like it's getting confused on whether or not aabs are actually 64-bit compliant, which seems to defeat the whole purpose.
Is this a Unity problem, does Google have an error in their system with regards to app bundles, or is there some other step I'm missing?
For those who have this problem since yesterday (August 19, 2019):
In Player Settings > Other Settings you must now uncheck the x86 box (It is for the 32-bit Intel architecture).
You will now only have the following warning:
The device types on which your application can be installed will be more restricted.
But, in my case, it drops from 12392 devices to 12385 devices.
Here is the opinion of a Unity member on the issue:
x86 is used by less than 0.4% of all Android devices, so it shouldn't have any real impact.
x86 target will be removed completely in Unity 2019.3.
It looks that there was a bug in the Play Console where this message was displayed even when the AAB was compliant. This should have been fixed last Friday afternoon.
Try again now.

Best current Android emulation options

My Requirements
Run Android on an x86_64 CPU (x86/x86_64 binaries preferred)
Run inside KVM/Qemu or in an X session.
Fast (Best performance possible)
Install apps from Google play store
Reasonably stable, should not crash too often.
Not required: GPU acceleration (graphics intensive apps will not be used)
Android x86 has been around for quite some time, and the last build that they have is 4.4 and was from 1st Jan 2015. Seems older than I would have expected?
I see that the official android emulator now has accel-vm but I've not seen any performance comparisons between it and Android x86.
I've also seen other related projects mentioned
Genymotion
bluestacks
jar of beans
andy
In the case of ARM dependency
If I find that some app that I need will not run on x86, what is my 2nd best alternative that can emulate ARM with good performance on an x86_64 CPU?
Any recommendations to help with the above are welcome.

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.