How to run Cuttlefish virtual Android device in selinux permissive mode? - android-source

I am using Cuttlefish virtual Android device to build and run AOSP.
I am trying to add new native HAL service (binderized), which implements new HIDL interface.
To work on SELinux policy rules for the new HAL service, I want to run Android in permissive mode, inside Cuttlefish virtual device.
I tried adding kernel_cmdline parameter BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive to device's BoardConfig.mk, as instructed here.
But it made Cuttlefish unable to boot, and keep on rebooting.
How do we set selinux mode to permissive when running Android in Cuttlefish virtual device?

While launching cvd you can pass a flag which will enable selinux into Permissive mode
launch_cvd -guest_enforce_security=false

Related

I have problem launching emulator. Each i try to launch it, the text below what I get

Unable to start the virtual device.
VirtualBox cannot start the virtual device.
Virtualization technology (VT-X, SVM, AMD-V) may be unavailable or disabled. Please verify your BIOS/UEFI settings.If it is available and enabled, please verify that no other hypervisor (QEMU) is currently in use.
I'm unable to launch the device.

Try to Edit the AVD and set "hw.gpu.mode=off"

When I try to run android emulator I got following error and my emulator doesn't start at all.
Error:
Please check if you can update your video driver.
If it doesn't help, try to Edit the AVD and set "hw.gpu.mode=off".
When I set hw.gpu.mode=off then emulator starts but it super extremely slow even if I add 4GB of ram. I think it's due to hw.gpu.mode=off. Is there any other workaround still to use gpu?
Componenets which are enabled:
Hyper-V
Virtual Machine platform
Windows Hypervisor Platform
Virtualization enabled in BIOS
Besides I've tried different fixes available on internet like : disabling enabling Hyper-V & Windows Hypervisor platform including system restarts etc but none seems to work yet.

Running Instagram on AVD

I wanted to use Instagram on my computer, so I decided to use an Android Virtual Device for that task.
I downloaded the Android SDK and the newest apk for instagram for my computer.
Then I created a new AVD and ran it. After it was booted, I installed the instagram apk using adb install instagram.apk.
It installed smoothly and after clicking the app, it started.
Now here's my problem: From there on nothing works.
When I try to login and I press the login button, nothing happens like there would be no internet connection.
Browsers and other apps using an internet connection work just fine, just instagram doesn't work.
How can I fix this?
I think it has something to do that the android Emulator can't really handle a global proxy.
Therefore hostnames get resolved directly to their IP which violates HTTP 1.1 standarts and the request doesn't get send properly.
To fix this, it is needed to change it so the hostname gets send instead of the IP.
You should try creating an AVD with different settings. More RAM and allowing GPU emulation is a good idea. If you insist on using an AVD and you have an appropriate intel CPU then you can make the emulator run much faster by following these steps. They are a bit complicated, but worth it if you want the emulator to run quicker.
I typically try to avoid using the Android emulator while I am developing apps. It has its uses, but it tends to be slow and doesn't have all of the capabilities of actual devices.
As an alternative to using an AVD, I would recommend downloading and installing BlueStacks. BluesStacks was written from the ground up to allow running Android apps on your Windows PC or Mac. I have used it before and it does a great job. Much better than an AVD.
Try visual studio emulator for android. Instagram works on it with enabled and connected wifi. This emulator works better than BlueStacks.

Android emulator and virtualbox cannot run at same time

Whenever I have Virtualbox running, I cannot start an Android emulator image (and vice versa). The error message in the AVD manager is
ioctl(KVM_CREATE_VM) failed: Device or resource busy
ko:failed to initialize KVM
How can I make both run at the same time?
That is a Ubuntu 64 bit, all involved software is of the latest released version.
Removing the kvm kernel modules (using 'sudo rmmod kvm_intel kvm') makes it possible to run the Virtualbox and the Android emulator at the same time but the performance of the Android emulator in such a setup is extremely bad. If possible it is better to shutdown the Virtualbox emulator and unload its driver (vboxdrv) by running 'sudo /etc/init.d/vboxdrv stop'. Google suggests this "solution" on its Android Emulator page in the section about Linux.
I got the same VirtualBox conflict.
Solved it by using ABI different from "x86" (armeabi-v7a in my case)
I stopped the virtual machines I had running with VirtualBox. This made the error disappear.
I had the same problem on Ubuntu 13.10.
Try to remove kvm and kvm_intel kernel modules.
To do this:
Stop all emulators.
Run command: 'sudo rmmod kvm_intel kvm'
Without these kernel modules Virtualbox and Android emulators can work at the same time.
BTW, I do not know why the modules are loaded.
There is finally a fix for this.
Follow these steps for macOS:
In Android Studio Go to Tools -> Android -> SDK Manager
Confirm you have the latest version of Intel Emulator Accelerator HAXM installed (v6.1.1) .
Go to the extras directory of the Android SDK location displayed in the preferences. On MacOS you can do this:
open ~/Library/Android/sdk/extras
Install the HAXM packing by opening IntelHAXM_6.1.1.dmg, then opening IntelHAXM_6.1.1.mpkg in the mounted folder, and following the installer instructions.
Follow these steps for Windows:
In Android Studio Go to Tools -> Android -> SDK Manager
Confirm you have the latest version of Intel Emulator Accelerator HAXM installed (v6.1.1) .
Go to the extras directory of the Android SDK location displayed in the preferences. Something like:
C:\Users\<username>\AppData\Local\Android\sdk\extras
In that directory is some kind of file like intelhaxm-android.exe. Run it.
You also can change CPT/ABI setting from x86 to arm in emulator settings.
I finally made this problem obsolete by using Genymotion instead of the standard Android emulator. Besides not having this conflict, it is several times faster than the normal emulator.
Another solution is to use libvirt backed vagrant using vagrant-libvirt plugin.
For those who are developing on Linux and are stuck with a host of back-end systems running inside virtualbox, a simple solution is simply to create a virtualbox X86 Android VM and expose the 5555 port on the NAT interface tunnelled from localhost through PAT.
No need for slow arm AVD, no need for libvirt/vagrant let alone killing kvm!
Then let adb know about it
$ adb tcpip 5555
restarting in TCP mode port: 5555
$ adb connect 127.0.0.1
connected to 127.0.0.1:5555
$ adb devices
List of devices attached adb server
* daemon started successfully
emulator-5554 device
Then, pressing run or debug, in Android Studio will deploy and execute on that VM.
You have complete control under Android Studio debugger.
Though it's a workaround either, but definitely better than disabling KVM as everyone suggesting.
Just run the virtualbox guest in KVM instead. For example (kvm here is just a script running a qemu-system-x86_64 -enable-kvm):
kvm Win7.vdi -boot c -m 2G -vga qxl
In some cases, we need to keep virtualbox machines up and running therefore let all the virtualbox machines keep running, switch to physical mobile device to test your application instead of emulator.
you can use expo if you are doing with react-native or your real android/ios device.
I resolved it by installing HAXM 6.1.2.
Please refer to the following link for details :- https://forums.docker.com/t/cant-using-docker-for-mac-with-android-emulator-haxm/8939/11
This might be out of topic, due to the fact that OP requested VirtualBox + KVM in the same time, but still, it might be the workaround:
I was looking for a way to launch Windows 7 and AVD on Ubuntu 18.10 x64. Turning off KVM is not an option due to the fact that performance of AVD is critical to me. I have installed Windows 7 via Virtual Machine Manager (virt-manager package) and now both the AVD and Windows 7 are hardware accelerated.
Here is how solved this issue, using vagrant and it's two plugins 'libvirt' and 'mutate':
Open terminal and set environment variables:
export VAGRANT_DEFAULT_PROVIDER=libvirt
export VAGRANT_HOME=/home/directoryToStoreVagrant/
VBoxManage list vms
Now copy the a the code obtained from last command like
"c1530713-aec2-4415-a6b5-b057928c7e5f" and use in the following:
vagrant package --base c1530713-aec2-4415-a6b5-b057928c7e5f
--output window7.box
vagrant init window7
vagrant up window7 --provider=libvirt
vagrant box list
You need to install some vagrant plugins like libvirt and
mutate. Mutate will convert .box to libvirt VM:
vagrant plugin install vagrant-libvirt
vagrant plugin install vagrant-mutate
Converting vagrant box to libvirt:
vagrant mutate window7_.box libvirt
Now you can initialise the vagrant VM. If any error persist move to
edit your Vagrant file. Like for me I uncomment the line starts with
config.vm.network and then run command below:
vagrant up --provider=libvirt
This is how I was able get rid of this error completely

Android Emulator 'No Service'

I am new to both the android and android development so I'm not on familiar ground here.
When I start the emulator I have no service. Therefore I have no internet connection on the emulator.
I am running Windows 7 and I generally run the emulator via eclipse.
My host machine is connected to the internet via the Local Area Network. There is no proxy.
I have tried:
Disabling all network adapters except for the Local Area Network [link]
Running the emulator from cmd line with: emulator -avd -dns-server 8.8.8.8
Reinstalling the SDK Tools 9 and Platform Tools (rev 2).
Restarting the machine! :P
Is there a setup needed to specify to simulate a 3G connection? Or could this be a Windows 7 permissions issue? Or am I doomed like these folks: link link
Ah! found the solution.. I uninstalled the entire SDK and reinstalled it to C:/Android. I deleted the C:/Users/[your-name]/.android folder and recreated an avd. Voila.. Something in there worked!
[edit]
Actually it looks like you have to keep restarting the emulator until it connects. I will often get no service so I restart a bunch of times till it works.
I found that 'Airplane Mode' was enabled by default in the standalone android emulator - this may also be the cause in the sdk version. Turning this off (by holding down the red power button until the menu came up, and then toggling the airplane mode button/section) allowed the emulator to 'find service' and connect properly through the LAN.