Code Monkey home page Code Monkey logo

android-container's People

Contributors

phatnhse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-container's Issues

Emulator fails to startup and connect.

I've followed the instructions listed below.

My machine is a macbook pro with Docker Desktop on it.

Here is my log:

docker run --privileged -it \                  
--rm -v $PWD:/data \
-v gradle-cache:/cache \
android-container:sunflower \ 
bash -c '. /start.sh && /data/gradlew test connectedAndroidTest -p /data'
* daemon not running; starting now at tcp:5037
* daemon started successfully
emulator: Android emulator version 30.0.12.0 (build_id 6466327) (CL:N/A)
emulator: Found AVD name 'android_arm'
emulator: Found AVD target architecture: arm
emulator: argv[0]: 'emulator'; program directory: '/opt/android/emulator'
emulator:  Found directory: /opt/android/system-images/android-25/google_apis/armeabi-v7a/

emulator: emuDirName: '/opt/android/emulator'
emulator:  Found directory: /opt/android/system-images/android-25/google_apis/armeabi-v7a/

emulator: Probing for /opt/android/system-images/android-25/google_apis/armeabi-v7a//kernel-ranchu-64: file missing
emulator: try dir /opt/android/emulator
emulator: Trying emulator path '/opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless'
emulator: Found target-specific 64-bit emulator binary: /opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless
emulator: Adding library search path: '/opt/android/emulator/lib64'
emulator: Adding library search path: '/opt/android/emulator/lib64/gles_angle'
emulator: Adding library search path: '/opt/android/emulator/lib64/gles_angle9'
emulator: Adding library search path: '/opt/android/emulator/lib64/gles_angle11'
emulator: Adding library search path: '/opt/android/emulator/lib64/gles_swiftshader'
emulator: Adding library search path: '/opt/android/emulator/lib64/libstdc++'
emulator: Running :/opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless
emulator: qemu backend: argv[00] = "/opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless"
emulator: qemu backend: argv[01] = "-avd"
emulator: qemu backend: argv[02] = "android_arm"
emulator: qemu backend: argv[03] = "-verbose"
emulator: qemu backend: argv[04] = "-no-boot-anim"
emulator: qemu backend: argv[05] = "-no-window"
emulator: qemu backend: argv[06] = "-gpu"
emulator: qemu backend: argv[07] = "off"
emulator: Concatenated backend parameters:
 /opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless -avd android_arm -verbose -no-boot-anim -no-window -gpu off
emulator: autoconfig: -skin 1080x1920
emulator: autoconfig: -skindir (null)
emulator: autoconfig: -kernel /opt/android/system-images/android-25/google_apis/armeabi-v7a//kernel-ranchu
emulator: Auto-detect: Kernel image requires new device naming scheme.
emulator: Auto-detect: Kernel does not support YAFFS2 partitions.
emulator: autoconfig: -ramdisk /opt/android/system-images/android-25/google_apis/armeabi-v7a//ramdisk.img
emulator: Using initial system image: /opt/android/system-images/android-25/google_apis/armeabi-v7a//system.img
emulator: No vendor image
emulator: autoconfig: -initdata /root/.android/avd/android_arm.avd/userdata.img
emulator: autoconfig: -cache /root/.android/avd/android_arm.avd/cache.img
emulator: Increasing RAM size to 1024MB
emulator: VM heap size 0MB is below hardware specified minimum of 256MB,setting it to that value
emulator: System image is read only
emulator: Found 1 DNS servers: 192.168.65.1
emulator: found magic skin width=1080 height=1920 bpp=16

emulator: VERBOSE: System.cpp:2346: statvfs('/root/.android/avd/android_arm.avd/snapshots/default_boot/ram.img') failed: No such file or directory

emulator: registered 'boot-properties' qemud service
emulator: Adding boot property: 'qemu.cmdline' = 'androidboot.logcat=v:* androidboot.consolepipe=qemu_pipe,pipe:logcat'
emulator: Adding boot property: 'qemu.logcat' = 'start'
emulator: Creating ext4 userdata partition: /root/.android/avd/android_arm.avd/data
Creating filesystem with parameters:
    Size: 838860800
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7328
    Inode size: 256
    Journal blocks: 3200
    Label: 
    Blocks: 204800
    Block groups: 7
    Reserved block group size: 55
Created filesystem with 60/51296 inodes and 10734/204800 blocks
emulator: WARNING: encryption is off
emulator: Creating empty ext4 cache partition: /root/.android/avd/android_arm.avd/cache.img
Creating filesystem with parameters:
    Size: 69206016
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 4224
    Inode size: 256
    Journal blocks: 1024
    Label: 
    Blocks: 16896
    Block groups: 1
    Reserved block group size: 7
Created filesystem with 11/4224 inodes and 1302/16896 blocks
emulator: VERBOSE: AdbInterface.cpp:385: Found: 3 adb executables
emulator: VERBOSE: AdbInterface.cpp:387: Adb: /opt/android/platform-tools/adb
emulator: VERBOSE: AdbInterface.cpp:387: Adb: /opt/android/platform-tools/adb
emulator: VERBOSE: AdbInterface.cpp:387: Adb: /opt/android/platform-tools/adb
emulator: VERBOSE: AdbInterface.cpp:408: Path:/opt/android/platform-tools/adb protocol version: 41
emulator: VERBOSE: AdbInterface.cpp:408: Path:/opt/android/platform-tools/adb protocol version: 41
emulator: VERBOSE: AdbInterface.cpp:408: Path:/opt/android/platform-tools/adb protocol version: 41
emulator: GPU emulation is disabled
emulator: VERBOSE: load_config.cpp:242: Verified boot params were not found.
emulator: Found 1 DNS servers: 192.168.65.1
Content of hardware configuration file:
  hw.cpu.arch = arm
  hw.cpu.model = cortex-a8
  hw.cpu.ncore = 2
  hw.ramSize = 1024
  hw.screen = multi-touch
  hw.mainKeys = false
  hw.trackBall = false
  hw.keyboard = false
  hw.keyboard.lid = false
  hw.keyboard.charmap = qwerty2
  hw.dPad = false
  hw.rotaryInput = false
  hw.gsmModem = true
  hw.gps = true
  hw.battery = true
  hw.accelerometer = true
  hw.gyroscope = true
  hw.audioInput = true
  hw.audioOutput = true
  hw.sdCard = true
  disk.cachePartition = true
  disk.cachePartition.path = /root/.android/avd/android_arm.avd/cache.img
  disk.cachePartition.size = 66m
  test.quitAfterBootTimeOut = -1
  test.delayAdbTillBootComplete = 0
  test.monitorAdb = 0
  hw.lcd.width = 1080
  hw.lcd.height = 1920
  hw.lcd.depth = 16
  hw.lcd.density = 480
  hw.lcd.backlight = true
  hw.lcd.vsync = 60
  hw.gltransport = pipe
  hw.gltransport.asg.writeBufferSize = 1048576
  hw.gltransport.asg.writeStepSize = 4096
  hw.gltransport.asg.dataRingSize = 32768
  hw.gltransport.drawFlushInterval = 800
  hw.displayRegion.0.1.xOffset = -1
  hw.displayRegion.0.1.yOffset = -1
  hw.displayRegion.0.1.width = 0
  hw.displayRegion.0.1.height = 0
  hw.fold.adjust = false
  hw.display1.width = 0
  hw.display1.height = 0
  hw.display1.density = 0
  hw.display1.xOffset = -1
  hw.display1.yOffset = -1
  hw.display1.flag = 0
  hw.display2.width = 0
  hw.display2.height = 0
  hw.display2.density = 0
  hw.display2.xOffset = -1
  hw.display2.yOffset = -1
  hw.display2.flag = 0
  hw.display3.width = 0
  hw.display3.height = 0
  hw.display3.density = 0
  hw.display3.xOffset = -1
  hw.display3.yOffset = -1
  hw.display3.flag = 0
  hw.gpu.enabled = false
  hw.gpu.mode = off
  hw.initialOrientation = portrait
  hw.camera.back = emulated
  hw.camera.front = none
  vm.heapSize = 256
  hw.sensors.light = true
  hw.sensors.pressure = true
  hw.sensors.humidity = true
  hw.sensors.proximity = true
  hw.sensors.magnetic_field = true
  hw.sensors.magnetic_field_uncalibrated = true
  hw.sensors.gyroscope_uncalibrated = true
  hw.sensors.orientation = true
  hw.sensors.temperature = true
  hw.useext4 = true
  hw.arc = false
  hw.arc.autologin = false
  kernel.path = /opt/android/system-images/android-25/google_apis/armeabi-v7a//kernel-ranchu
  kernel.newDeviceNaming = yes
  kernel.supportsYaffs2 = no
  disk.ramdisk.path = /opt/android/system-images/android-25/google_apis/armeabi-v7a//ramdisk.img
  disk.systemPartition.initPath = /opt/android/system-images/android-25/google_apis/armeabi-v7a//system.img
  disk.systemPartition.size = 2g
  disk.vendorPartition.size = 0
  disk.dataPartition.path = /root/.android/avd/android_arm.avd/userdata-qemu.img
  disk.dataPartition.initPath = /root/.android/avd/android_arm.avd/userdata.img
  disk.dataPartition.size = 800m
  PlayStore.enabled = false
  avd.name = android_arm
  avd.id = android_arm
  fastboot.forceColdBoot = false
  android.sdk.root = /opt/android
  android.avd.home = /root/.android/avd
.
QEMU options list:
emulator: argv[00] = "/opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless"
emulator: argv[01] = "-dns-server"
emulator: argv[02] = "192.168.65.1"
emulator: argv[03] = "-mem-path"
emulator: argv[04] = "/root/.android/avd/android_arm.avd/snapshots/default_boot/ram.img"
emulator: argv[05] = "-mem-file-shared"
emulator: argv[06] = "-serial"
emulator: argv[07] = "null"
emulator: argv[08] = "-device"
emulator: argv[09] = "goldfish_pstore,addr=0xff018000,size=0x10000,file=/root/.android/avd/android_arm.avd/data/misc/pstore/pstore.bin"
emulator: argv[10] = "-cpu"
emulator: argv[11] = "cortex-a15"
emulator: argv[12] = "-machine"
emulator: argv[13] = "type=ranchu"
emulator: argv[14] = "-m"
emulator: argv[15] = "1024"
emulator: argv[16] = "-lcd-density"
emulator: argv[17] = "480"
emulator: argv[18] = "-nodefaults"
emulator: argv[19] = "-kernel"
emulator: argv[20] = "/opt/android/system-images/android-25/google_apis/armeabi-v7a//kernel-ranchu"
emulator: argv[21] = "-initrd"
emulator: argv[22] = "/opt/android/system-images/android-25/google_apis/armeabi-v7a//ramdisk.img"
emulator: argv[23] = "-drive"
emulator: argv[24] = "index=0,id=userdata,if=none,file=/root/.android/avd/android_arm.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
emulator: argv[25] = "-device"
emulator: argv[26] = "virtio-blk-device,drive=userdata"
emulator: argv[27] = "-drive"
emulator: argv[28] = "index=1,id=cache,if=none,file=/root/.android/avd/android_arm.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
emulator: argv[29] = "-device"
emulator: argv[30] = "virtio-blk-device,drive=cache"
emulator: argv[31] = "-drive"
emulator: argv[32] = "index=2,id=system,if=none,file=/opt/android/system-images/android-25/google_apis/armeabi-v7a//system.img,read-only"
emulator: argv[33] = "-device"
emulator: argv[34] = "virtio-blk-device,drive=system"
emulator: argv[35] = "-netdev"
emulator: argv[36] = "user,id=mynet"
emulator: argv[37] = "-device"
emulator: argv[38] = "virtio-net-device,netdev=mynet"
emulator: argv[39] = "-device"
emulator: argv[40] = "virtio-rng-device"
emulator: argv[41] = "-show-cursor"
emulator: argv[42] = "-L"
emulator: argv[43] = "/opt/android/emulator/lib/pc-bios"
emulator: argv[44] = "-append"
emulator: argv[45] = "qemu=1 no_timer_check androidboot.hardware=ranchu androidboot.serialno=EMULATOR30X0X12X0 keep_bootcon earlyprintk=ttyAMA0 android.qemud=1 console=0 android.checkjni=1 android.bootanim=0 qemu.gles=2 qemu.settings.system.screen_off_timeout=2147483647 qemu.vsync=60 qemu.gltransport=pipe qemu.gltransport.drawFlushInterval=800 qemu.opengles.version=131072 cma=288M@0-4G qemu.wifi=1 mac80211_hwsim.channels=2 loop.max_part=7 ramoops.mem_address=0xff018000 ramoops.mem_size=0x10000 memmap=0x10000$0xff018000 qemu.dalvik.vm.heapsize=256m"
emulator: argv[46] = "-android-hw"
emulator: argv[47] = "/root/.android/avd/android_arm.avd/hardware-qemu.ini"
Concatenated QEMU options:
 /opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless -dns-server 192.168.65.1 -mem-path /root/.android/avd/android_arm.avd/snapshots/default_boot/ram.img -mem-file-shared -serial null -device goldfish_pstore,addr=0xff018000,size=0x10000,file=/root/.android/avd/android_arm.avd/data/misc/pstore/pstore.bin -cpu cortex-a15 -machine type=ranchu -m 1024 -lcd-density 480 -nodefaults -kernel /opt/android/system-images/android-25/google_apis/armeabi-v7a//kernel-ranchu -initrd /opt/android/system-images/android-25/google_apis/armeabi-v7a//ramdisk.img -drive index=0,id=userdata,if=none,file=/root/.android/avd/android_arm.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=userdata -drive index=1,id=cache,if=none,file=/root/.android/avd/android_arm.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=cache -drive index=2,id=system,if=none,file=/opt/android/system-images/android-25/google_apis/armeabi-v7a//system.img,read-only -device virtio-blk-device,drive=system -netdev user,id=mynet -device virtio-net-device,netdev=mynet -device virtio-rng-device -show-cursor -L /opt/android/emulator/lib/pc-bios -append 'qemu=1 no_timer_check androidboot.hardware=ranchu androidboot.serialno=EMULATOR30X0X12X0 keep_bootcon earlyprintk=ttyAMA0 android.qemud=1 console=0 android.checkjni=1 android.bootanim=0 qemu.gles=2 qemu.settings.system.screen_off_timeout=2147483647 qemu.vsync=60 qemu.gltransport=pipe qemu.gltransport.drawFlushInterval=800 qemu.opengles.version=131072 cma=288M@0-4G qemu.wifi=1 mac80211_hwsim.channels=2 loop.max_part=7 ramoops.mem_address=0xff018000 ramoops.mem_size=0x10000 memmap=0x10000$0xff018000 qemu.dalvik.vm.heapsize=256m' -android-hw /root/.android/avd/android_arm.avd/hardware-qemu.ini
emulator: Android qemu version 30.0.12.0 (build_id 6466327) (CL:N/A)

emulator: Starting QEMU main loop
emulator: Adding boot property: 'ro.opengles.version' = '131072'
emulator: Adding boot property: 'qemu.sf.fake_camera' = 'back'
emulator: Adding boot property: 'dalvik.vm.heapsize' = '256m'
emulator: Adding boot property: 'qemu.hw.mainkeys' = '0'
emulator: Adding boot property: 'qemu.sf.lcd_density' = '480'
emulator: goldfish_events.have-dpad: false
emulator: goldfish_events.have-trackball: false
emulator: goldfish_events.have-camera: true
emulator: goldfish_events.have-keyboard: false
emulator: goldfish_events.have-lidswitch: false
emulator: goldfish_events.have-tabletmode: false
emulator: goldfish_events.have-touch: false
emulator: goldfish_events.have-multitouch: true
emulator: control console listening on port 5554, ADB on port 5555
pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver
Not using any http proxy
### WARNING: could not find /usr/share/zoneinfo/ directory. unable to determine host timezone
emulator: Adding boot property: 'qemu.timezone' = 'Unknown/Unknown'
emulator: android_hw_fingerprint_init: fingerprint qemud listen service initialized

E0818 14:59:00.955922600      47 socket_utils_common_posix.cc:201] check for SO_REUSEPORT: {"created":"@1597762740.955870900","description":"SO_REUSEPORT unavailable on compiling system","file":"/mnt/tmpfs/src/android/emu-master-dev/external/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc","file_line":169}
emulator: VERBOSE: GrpcServices.cpp:267: Started GRPC server at 127.0.0.1:8554, security: Local
emulator: emulator_window_fb_rotate

Your emulator is out of date, please update by launching Android Studio:
 - Start Android Studio
 - Select menu "Tools > Android > SDK Manager"
 - Click "SDK Tools" tab
 - Check "Android Emulator" checkbox
 - Click "OK"

emulator: onGuestSendCommand: [0x41ce1a0] Adb connected, start proxing data
Boot Status: 
### WARNING: could not find /usr/share/zoneinfo/ directory. unable to determine host timezone
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 

Error in build project

Hi. I followed your sample, and this is the result! what is wrong? why container download the gradle again?

sudo docker run --privileged -it --rm -v $PWD:/data android-container bash -c ". /start.sh && gradlew test && gradlew connectedAndroidTest -p /data"
* daemon not running; starting now at tcp:5037
* daemon started successfully
emulator: WARNING: Your AVD has been configured with an in-guest renderer, but the system image does not support guest rendering.Falling back to 'swiftshader_indirect' mode.
### WARNING: could not find /usr/share/zoneinfo/ directory. unable to determine host timezone
Your emulator is out of date, please update by launching Android Studio:
 - Start Android Studio
 - Select menu "Tools > Android > SDK Manager"
 - Click "SDK Tools" tab
 - Check "Android Emulator" checkbox
 - Click "OK"

Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
### WARNING: could not find /usr/share/zoneinfo/ directory. unable to determine host timezone
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 1
emulator: INFO: boot completed
emulator: INFO: boot time 50057 ms
emulator: Increasing screen off timeout, logcat buffer size to 2M.
emulator: Revoking microphone permissions for Google App.
Downloading https://services.gradle.org/distributions/gradle-5.4.1-bin.zip
.....### WARNING: could not find /usr/share/zoneinfo/ directory. unable to determine host timezone
..............................................................................
Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project ''.
> The project name must not be empty. Set the 'rootProject.name' or adjust the 'include' statement (see https://docs.gradle.org/5.4.1/dsl/org.gradle.api.initialization.Settings.html#org.gradle.api.initialization.Settings:include(java.lang.String[]) for more details).

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 4m 19s

Running as root without --no-sandbox is not supported.

Hi, sorry if my problem not related, but if you can help me plz.
When i build my docker by copy the emulator file in #1, I have an initialized device. So i can increase the boot time by snapshot like when using android studio. But when i try using this feature i get this error on exit (i get the result on the ubuntu on VM as root (like ubuntu in docker)):

emulator: Saving state on exit with session uptime 15645 ms
[8566:8566:0201/214339.170588:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

Any idea how can i fix it?
Thanks

Need some help

Hi.
Thank you for your great work. I am new in docker, i want to use android emulator in docker to do some tasks. If you can help me if this possible or not and how to do this.
I want to install some application by default in emulator, and then install my application to read notification of the emulator device for some deadline time and then stop and remove the container.
I want to do this using docker API in Golang, so i don't need GUI at all, and just collect some data in a text file and then pull the file using adb in a short time. I need to my code (code to run android-container image in docker and communicate with the emulator using adb) run in another docker container.
So i want to run a container that run another container (emulator) and manage all of this and return my result.
My question:

  • Is this possible?
  • To read notification of a device i need to give notification access in setting manually to my app. How can i do this without GUI? Or can i install my apps and config the setting in GUI and then commit the container?

Thanks.

Emulator problem on mac

Hi,

Thanks for your great work.

I run below command to check haxm on mac:

$kextstat | grep intel
  167    0 0xffffff7f83b0a000 0x28000    0x28000    com.intel.kext.intelhaxm (7.3.0) 65C423BE-0315-30BD-8DA8-CABFE8487E10 <8 6 5 3 1> 

The command is taken from here:

Android unit test works fine.

docker run --privileged -it --rm -v $PWD:/data -v gradle-cache:/cache android-container:sunflower bash -c '/data/gradlew test -p /data'

I couldn't run ui test. android_arm emulator never starts.

$docker run --privileged -it --rm -v $PWD:/data -v gradle-cache:/cache android-container:sunflower bash -c '. /start.sh &
& /data/gradlew test connectedAndroidTest -p /data'
* daemon not running; starting now at tcp:5037
* daemon started successfully
emulator: Android emulator version 30.0.12.0 (build_id 6466327) (CL:N/A)
emulator: Found AVD name 'android_arm'
emulator: Found AVD target architecture: arm
emulator: argv[0]: 'emulator'; program directory: '/opt/android/emulator'
emulator:  Found directory: /opt/android/system-images/android-25/google_apis/armeabi-v7a/

emulator: emuDirName: '/opt/android/emulator'
emulator:  Found directory: /opt/android/system-images/android-25/google_apis/armeabi-v7a/

emulator: Probing for /opt/android/system-images/android-25/google_apis/armeabi-v7a//kernel-ranchu-64: file missing
emulator: try dir /opt/android/emulator
emulator: Trying emulator path '/opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless'
emulator: Found target-specific 64-bit emulator binary: /opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless
emulator: Adding library search path: '/opt/android/emulator/lib64'
emulator: Adding library search path: '/opt/android/emulator/lib64/gles_angle'
emulator: Adding library search path: '/opt/android/emulator/lib64/gles_angle9'
emulator: Adding library search path: '/opt/android/emulator/lib64/gles_angle11'
emulator: Adding library search path: '/opt/android/emulator/lib64/gles_swiftshader'
emulator: Adding library search path: '/opt/android/emulator/lib64/libstdc++'
emulator: Running :/opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless
emulator: qemu backend: argv[00] = "/opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless"
emulator: qemu backend: argv[01] = "-avd"
emulator: qemu backend: argv[02] = "android_arm"
emulator: qemu backend: argv[03] = "-verbose"
emulator: qemu backend: argv[04] = "-no-boot-anim"
emulator: qemu backend: argv[05] = "-no-window"
emulator: qemu backend: argv[06] = "-gpu"
emulator: qemu backend: argv[07] = "off"
emulator: Concatenated backend parameters:
 /opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless -avd android_arm -verbose -no-boot-anim -no-window -gpu off
emulator: autoconfig: -skin 1080x1920
emulator: autoconfig: -skindir (null)
emulator: autoconfig: -kernel /opt/android/system-images/android-25/google_apis/armeabi-v7a//kernel-ranchu
emulator: Auto-detect: Kernel image requires new device naming scheme.
emulator: Auto-detect: Kernel does not support YAFFS2 partitions.
emulator: autoconfig: -ramdisk /opt/android/system-images/android-25/google_apis/armeabi-v7a//ramdisk.img
emulator: Using initial system image: /opt/android/system-images/android-25/google_apis/armeabi-v7a//system.img
emulator: No vendor image
emulator: autoconfig: -initdata /root/.android/avd/android_arm.avd/userdata.img
emulator: autoconfig: -cache /root/.android/avd/android_arm.avd/cache.img
emulator: Increasing RAM size to 1024MB
emulator: VM heap size 0MB is below hardware specified minimum of 256MB,setting it to that value
emulator: System image is read only
emulator: Found 1 DNS servers: 192.168.65.1
emulator: found magic skin width=1080 height=1920 bpp=16

emulator: VERBOSE: System.cpp:2346: statvfs('/root/.android/avd/android_arm.avd/snapshots/default_boot/ram.img') failed: No such file or directory

emulator: registered 'boot-properties' qemud service
emulator: Adding boot property: 'qemu.cmdline' = 'androidboot.logcat=v:* androidboot.consolepipe=qemu_pipe,pipe:logcat'
emulator: Adding boot property: 'qemu.logcat' = 'start'
emulator: Creating ext4 userdata partition: /root/.android/avd/android_arm.avd/data
Creating filesystem with parameters:
    Size: 838860800
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7328
    Inode size: 256
    Journal blocks: 3200
    Label: 
    Blocks: 204800
    Block groups: 7
    Reserved block group size: 55
Created filesystem with 60/51296 inodes and 10734/204800 blocks
emulator: WARNING: encryption is off
emulator: Creating empty ext4 cache partition: /root/.android/avd/android_arm.avd/cache.img
Creating filesystem with parameters:
    Size: 69206016
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 4224
    Inode size: 256
    Journal blocks: 1024
    Label: 
    Blocks: 16896
    Block groups: 1
    Reserved block group size: 7
Created filesystem with 11/4224 inodes and 1302/16896 blocks
emulator: VERBOSE: AdbInterface.cpp:385: Found: 3 adb executables
emulator: VERBOSE: AdbInterface.cpp:387: Adb: /opt/android/platform-tools/adb
emulator: VERBOSE: AdbInterface.cpp:387: Adb: /opt/android/platform-tools/adb
emulator: VERBOSE: AdbInterface.cpp:387: Adb: /opt/android/platform-tools/adb
emulator: VERBOSE: AdbInterface.cpp:408: Path:/opt/android/platform-tools/adb protocol version: 41
emulator: VERBOSE: AdbInterface.cpp:408: Path:/opt/android/platform-tools/adb protocol version: 41
emulator: VERBOSE: AdbInterface.cpp:408: Path:/opt/android/platform-tools/adb protocol version: 41
emulator: GPU emulation is disabled
emulator: VERBOSE: load_config.cpp:242: Verified boot params were not found.
emulator: Found 1 DNS servers: 192.168.65.1
Content of hardware configuration file:
  hw.cpu.arch = arm
  hw.cpu.model = cortex-a8
  hw.cpu.ncore = 2
  hw.ramSize = 1024
  hw.screen = multi-touch
  hw.mainKeys = false
  hw.trackBall = false
  hw.keyboard = false
  hw.keyboard.lid = false
  hw.keyboard.charmap = qwerty2
  hw.dPad = false
  hw.rotaryInput = false
  hw.gsmModem = true
  hw.gps = true
  hw.battery = true
  hw.accelerometer = true
  hw.gyroscope = true
  hw.audioInput = true
  hw.audioOutput = true
  hw.sdCard = true
  disk.cachePartition = true
  disk.cachePartition.path = /root/.android/avd/android_arm.avd/cache.img
  disk.cachePartition.size = 66m
  test.quitAfterBootTimeOut = -1
  test.delayAdbTillBootComplete = 0
  test.monitorAdb = 0
  hw.lcd.width = 1080
  hw.lcd.height = 1920
  hw.lcd.depth = 16
  hw.lcd.density = 480
  hw.lcd.backlight = true
  hw.lcd.vsync = 60
  hw.gltransport = pipe
  hw.gltransport.asg.writeBufferSize = 1048576
  hw.gltransport.asg.writeStepSize = 4096
  hw.gltransport.asg.dataRingSize = 32768
  hw.gltransport.drawFlushInterval = 800
  hw.displayRegion.0.1.xOffset = -1
  hw.displayRegion.0.1.yOffset = -1
  hw.displayRegion.0.1.width = 0
  hw.displayRegion.0.1.height = 0
  hw.fold.adjust = false
  hw.display1.width = 0
  hw.display1.height = 0
  hw.display1.density = 0
  hw.display1.xOffset = -1
  hw.display1.yOffset = -1
  hw.display1.flag = 0
  hw.display2.width = 0
  hw.display2.height = 0
  hw.display2.density = 0
  hw.display2.xOffset = -1
  hw.display2.yOffset = -1
  hw.display2.flag = 0
  hw.display3.width = 0
  hw.display3.height = 0
  hw.display3.density = 0
  hw.display3.xOffset = -1
  hw.display3.yOffset = -1
  hw.display3.flag = 0
  hw.gpu.enabled = false
  hw.gpu.mode = off
  hw.initialOrientation = portrait
  hw.camera.back = emulated
  hw.camera.front = none
  vm.heapSize = 256
  hw.sensors.light = true
  hw.sensors.pressure = true
  hw.sensors.humidity = true
  hw.sensors.proximity = true
  hw.sensors.magnetic_field = true
  hw.sensors.magnetic_field_uncalibrated = true
  hw.sensors.gyroscope_uncalibrated = true
  hw.sensors.orientation = true
  hw.sensors.temperature = true
  hw.useext4 = true
  hw.arc = false
  hw.arc.autologin = false
  kernel.path = /opt/android/system-images/android-25/google_apis/armeabi-v7a//kernel-ranchu
  kernel.newDeviceNaming = yes
  kernel.supportsYaffs2 = no
  disk.ramdisk.path = /opt/android/system-images/android-25/google_apis/armeabi-v7a//ramdisk.img
  disk.systemPartition.initPath = /opt/android/system-images/android-25/google_apis/armeabi-v7a//system.img
  disk.systemPartition.size = 2g
  disk.vendorPartition.size = 0
  disk.dataPartition.path = /root/.android/avd/android_arm.avd/userdata-qemu.img
  disk.dataPartition.initPath = /root/.android/avd/android_arm.avd/userdata.img
  disk.dataPartition.size = 800m
  PlayStore.enabled = false
  avd.name = android_arm
  avd.id = android_arm
  fastboot.forceColdBoot = false
  android.sdk.root = /opt/android
  android.avd.home = /root/.android/avd
.
QEMU options list:
emulator: argv[00] = "/opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless"
emulator: argv[01] = "-dns-server"
emulator: argv[02] = "192.168.65.1"
emulator: argv[03] = "-mem-path"
emulator: argv[04] = "/root/.android/avd/android_arm.avd/snapshots/default_boot/ram.img"
emulator: argv[05] = "-mem-file-shared"
emulator: argv[06] = "-serial"
emulator: argv[07] = "null"
emulator: argv[08] = "-device"
emulator: argv[09] = "goldfish_pstore,addr=0xff018000,size=0x10000,file=/root/.android/avd/android_arm.avd/data/misc/pstore/pstore.bin"
emulator: argv[10] = "-cpu"
emulator: argv[11] = "cortex-a15"
emulator: argv[12] = "-machine"
emulator: argv[13] = "type=ranchu"
emulator: argv[14] = "-m"
emulator: argv[15] = "1024"
emulator: argv[16] = "-lcd-density"
emulator: argv[17] = "480"
emulator: argv[18] = "-nodefaults"
emulator: argv[19] = "-kernel"
emulator: argv[20] = "/opt/android/system-images/android-25/google_apis/armeabi-v7a//kernel-ranchu"
emulator: argv[21] = "-initrd"
emulator: argv[22] = "/opt/android/system-images/android-25/google_apis/armeabi-v7a//ramdisk.img"
emulator: argv[23] = "-drive"
emulator: argv[24] = "index=0,id=userdata,if=none,file=/root/.android/avd/android_arm.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
emulator: argv[25] = "-device"
emulator: argv[26] = "virtio-blk-device,drive=userdata"
emulator: argv[27] = "-drive"
emulator: argv[28] = "index=1,id=cache,if=none,file=/root/.android/avd/android_arm.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
emulator: argv[29] = "-device"
emulator: argv[30] = "virtio-blk-device,drive=cache"
emulator: argv[31] = "-drive"
emulator: argv[32] = "index=2,id=system,if=none,file=/opt/android/system-images/android-25/google_apis/armeabi-v7a//system.img,read-only"
emulator: argv[33] = "-device"
emulator: argv[34] = "virtio-blk-device,drive=system"
emulator: argv[35] = "-netdev"
emulator: argv[36] = "user,id=mynet"
emulator: argv[37] = "-device"
emulator: argv[38] = "virtio-net-device,netdev=mynet"
emulator: argv[39] = "-device"
emulator: argv[40] = "virtio-rng-device"
emulator: argv[41] = "-show-cursor"
emulator: argv[42] = "-L"
emulator: argv[43] = "/opt/android/emulator/lib/pc-bios"
emulator: argv[44] = "-append"
emulator: argv[45] = "qemu=1 no_timer_check androidboot.hardware=ranchu androidboot.serialno=EMULATOR30X0X12X0 keep_bootcon earlyprintk=ttyAMA0 android.qemud=1 console=0 android.checkjni=1 android.bootanim=0 qemu.gles=2 qemu.settings.system.screen_off_timeout=2147483647 qemu.vsync=60 qemu.gltransport=pipe qemu.gltransport.drawFlushInterval=800 qemu.opengles.version=131072 cma=288M@0-4G qemu.wifi=1 mac80211_hwsim.channels=2 loop.max_part=7 ramoops.mem_address=0xff018000 ramoops.mem_size=0x10000 memmap=0x10000$0xff018000 qemu.dalvik.vm.heapsize=256m"
emulator: argv[46] = "-android-hw"
emulator: argv[47] = "/root/.android/avd/android_arm.avd/hardware-qemu.ini"
Concatenated QEMU options:
 /opt/android/emulator/qemu/linux-x86_64/qemu-system-armel-headless -dns-server 192.168.65.1 -mem-path /root/.android/avd/android_arm.avd/snapshots/default_boot/ram.img -mem-file-shared -serial null -device goldfish_pstore,addr=0xff018000,size=0x10000,file=/root/.android/avd/android_arm.avd/data/misc/pstore/pstore.bin -cpu cortex-a15 -machine type=ranchu -m 1024 -lcd-density 480 -nodefaults -kernel /opt/android/system-images/android-25/google_apis/armeabi-v7a//kernel-ranchu -initrd /opt/android/system-images/android-25/google_apis/armeabi-v7a//ramdisk.img -drive index=0,id=userdata,if=none,file=/root/.android/avd/android_arm.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=userdata -drive index=1,id=cache,if=none,file=/root/.android/avd/android_arm.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=cache -drive index=2,id=system,if=none,file=/opt/android/system-images/android-25/google_apis/armeabi-v7a//system.img,read-only -device virtio-blk-device,drive=system -netdev user,id=mynet -device virtio-net-device,netdev=mynet -device virtio-rng-device -show-cursor -L /opt/android/emulator/lib/pc-bios -append 'qemu=1 no_timer_check androidboot.hardware=ranchu androidboot.serialno=EMULATOR30X0X12X0 keep_bootcon earlyprintk=ttyAMA0 android.qemud=1 console=0 android.checkjni=1 android.bootanim=0 qemu.gles=2 qemu.settings.system.screen_off_timeout=2147483647 qemu.vsync=60 qemu.gltransport=pipe qemu.gltransport.drawFlushInterval=800 qemu.opengles.version=131072 cma=288M@0-4G qemu.wifi=1 mac80211_hwsim.channels=2 loop.max_part=7 ramoops.mem_address=0xff018000 ramoops.mem_size=0x10000 memmap=0x10000$0xff018000 qemu.dalvik.vm.heapsize=256m' -android-hw /root/.android/avd/android_arm.avd/hardware-qemu.ini
emulator: Android qemu version 30.0.12.0 (build_id 6466327) (CL:N/A)

emulator: Starting QEMU main loop
emulator: Adding boot property: 'ro.opengles.version' = '131072'
emulator: Adding boot property: 'qemu.sf.fake_camera' = 'back'
emulator: Adding boot property: 'dalvik.vm.heapsize' = '256m'
emulator: Adding boot property: 'qemu.hw.mainkeys' = '0'
emulator: Adding boot property: 'qemu.sf.lcd_density' = '480'
emulator: goldfish_events.have-dpad: false
emulator: goldfish_events.have-trackball: false
emulator: goldfish_events.have-camera: true
emulator: goldfish_events.have-keyboard: false
emulator: goldfish_events.have-lidswitch: false
emulator: goldfish_events.have-tabletmode: false
emulator: goldfish_events.have-touch: false
emulator: goldfish_events.have-multitouch: true
emulator: control console listening on port 5554, ADB on port 5555
pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver
Not using any http proxy
### WARNING: could not find /usr/share/zoneinfo/ directory. unable to determine host timezone
emulator: Adding boot property: 'qemu.timezone' = 'Unknown/Unknown'
emulator: android_hw_fingerprint_init: fingerprint qemud listen service initialized

E0527 11:36:50.751170600      47 socket_utils_common_posix.cc:201] check for SO_REUSEPORT: {"created":"@1590579410.751072600","description":"SO_REUSEPORT unavailable on compiling system","file":"/mnt/tmpfs/src/android/emu-master-dev/external/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc","file_line":169}
emulator: VERBOSE: GrpcServices.cpp:267: Started GRPC server at 127.0.0.1:8554, security: Local
emulator: emulator_window_fb_rotate

Your emulator is out of date, please update by launching Android Studio:
 - Start Android Studio
 - Select menu "Tools > Android > SDK Manager"
 - Click "SDK Tools" tab
 - Check "Android Emulator" checkbox
 - Click "OK"

emulator: onGuestSendCommand: [0x3722c30] Adb connected, start proxing data
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
Boot Status: 
....

I need help to start arm emulator. Or how can I enable kvm/haxm on the container ?

I changed this line https://github.com/fastphat/android-container/blob/master/start.sh#L13

$ANDROID_HOME/emulator/emulator -avd "${emulator_name}" -verbose -no-boot-anim -no-window -gpu off &

$ANDROID_HOME/emulator/emulator -avd android_arm -no-audio -no-window &
But neither of them worked for me.

zipalign not found

Amazing job and very useful

But I have an issue I was trying to use the emulator and load and apk fike through appium that running on the same container but I keep getting this issue

[[Unable to create a new remote session. Please check the server log for more details. Original error: An unknown server-side error occurred while processing the command. Original error: Could not find 'zipalign' in ["/opt/android/platform-tools/zipalign","/opt/android/emulator/zipalign","/opt/android/tools/zipalign","/opt/android/tools/bin/zipalign"]. Do you have Android Build Tools installed at '/opt/android'?]
]

not sure whats the problem it occurs only when I use Jenkins pipeline, if I run everything locally copy the apk to container /opt directory and launch my test its working fine

but when I use Jenkins pipeline with same commands i got the error above

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.