Code Monkey home page Code Monkey logo

android-studio-docker's Introduction

Android-Studio docker container

Complete Android-Studio in a Docker container. You can even start an Emulator inside it.

If you don't have a display the Emulator can run with a "dummy" display - perfect for continous integration.

Tested on Linux only.

Building without docker compose

Just run "./build.sh", or "docker build -t deadolus/android-studio ." directly. An already built version is also on Docker Hub. So you may also run "docker pull deadolus/android-studio". You may of course change the name of the container.

Running without docker compose

Run

"HOST_DISPLAY=1 ./run.sh"

or run directly via

"docker run -i $AOSP_ARGS -v pwd/studio-data:/studio-data --privileged --group-add plugdev deadolus/android-studio"

run.sh has some options which you can set via Environment variables.

  • NO_TTY - Do not run docker with -t flag
  • DOCKERHOSTNAME - set Docker Hostname. I use it to run tests headless
  • HOST_USB - Use the USB of the Host (useful if you want your physical device to be recognized by adb inside the container)
  • HOST_NET - Use the network of the host
  • HOST_DISPLAY - Allow the container to use the Display of the host. E.g. Let the emulator run on the Hosts Display environment.

You may use a Variable like this: "HOST_NET=1 ./run.sh"

The default docker entrypoint tries to start android-studio. So it probably does not make sense to try starting via run.sh without HOST_DISPLAY=1. If you just want a shell in the container, without starting Android Studio, run "./run.sh bash" to bypass starting Android Studio

Running and Building with docker compose:

  1. Comment/uncomment the appropriate lines in the compose.yaml depending on if you are running this natively in linux or in WSL.
  2. To build: docker compose build android_emulator
  3. To run: docker compose run android_emulator

Additional information - continous integration

I included a script under provisioning/ndkTests.sh which demonstrates how you may use this container in a CI environment. The script starts a headless container, if the HOSTNAME variable is set to CI. It then changes in to a directory (workspace/GoogleTestApp) where it builds and installs an app. It parses logcat for lines containing a string (GoogleTest), uninstalls the app and does some analysis on the parsed lines. While this script probably does not make much sense FOR YOU, it might be useful as a guiding point for you.

Contributors

@Deadolus
@guilhermelinhares
@mtomcanyi
@Naveenkhegde
@BenBlumer

android-studio-docker's People

Contributors

deadolus avatar mtomcanyi avatar naveenkhegde 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

android-studio-docker's Issues

No sound on AVL

Summary

No sound when launching YouTube in chrome in AVL Oreo.

My installation

I built the container using

$ ./build.sh

and run that container using

$ HOST_DISPLAY=1 ./run.sh

This should be first start, android studio asked me that there is updated version available, so I updated it to most recent version(3.14).
Installed Gradle, SDK [API 28 - Jelly Beans] and so on.
Installed related AVL package(Oreo 8.1, Nexus 5.x), everything goes well, and started AVL.
But I turned youtube videos using chrome, there was no sound.

** To be honestly, but I'm new to android studio, not only this wonderful docker tool.
** And not familiar with github and english ;(

IMHO

This issue could be related with Pulseaudio. I had a similar project, which can run firefox in docker container, and it also can't sound at all first.
But when I entered the shell on its container and type

$ pulseaudio

then firefox in container can sound

Issues with compose and run

When running "docker compose run android_emulator" the exec fails to run docker entrypoint

$user :~/Android_Container/android-studio-docker$ sudo docker compose run android_emulator
exec /usr/local/bin/docker_entrypoint.sh: no such file or directory

Sorry, total noob...

$ HOST_DISPLAY=1 ./run.sh
android_studio

Invalid IDE Configuration: Config directory '/home/android/.AndroidStudio3.5/config' is invalid.

If you have modified the 'idea.config.path' property, please make sure it is correct,
otherwise please re-install the IDE.

mapping volume for AndroidStudioProjects

I think that a folder for own projects should be mapped for the default /home/android/AndroidStudioProjects, too,
in order to be accessible from the host...
The image can be run via docker-compose, using

docker-compose.yaml
version: '3'
### check this folder-hierarchy:
#mkdir -p astudio-data/Android
#mkdir -p astudio-data/profile/{AndroidStudio2022.1.1.21,android,gradle,java}
#mkdir astudio-projects

services:
    astudio:
        image: deadolus/android-studio
#        container_name: a_studio
#        hostname: ...
        volumes:
#            - android-studio:/androidstudio-data      ### what is it good for...?
### edit /home/AndroidStuff according to `pwd`:
            - /home/AndroidStuff/astudio-projects:/home/android/AndroidStudioProjects
            - /home/AndroidStuff/astudio-data:/studio-data
            - /dev/bus/usb:/dev/bus/usb
            - /tmp/.X11-unix:/tmp/.X11-unix
        environment:
            DISPLAY:
        privileged: true
#        group_add:     ### this is NOT recognized, however, `groups` lists plugdev group
#            - plugdev
#        command: "deadolus/android-studio"
#        networks:
#            - hostnet

#volumes:    ### it is necessary only if uncommented above
#    android-studio:

#networks:
#    hostnet:
#      external: true
#      name: host

Now, one can docker-compose up -d for the first time and docker-compose start after exits, etc.

Unable to run commands

I tried running these commands but got errors for both of them after cloning the repo and pulling the image from Docker:

Reproduce:
$ docker pull deadolus/android-studio
$ git clone https://github.com/Deadolus/android-studio-docker
$ docker run -i $AOSP_ARGS -v pwd/studio-data:/studio-data --privileged --group-add plugdev deadolus/android-studio

Error:
docker: Error response from daemon: create pwd/studio-data: "pwd/studio-data" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.

Then I tried the other command:
$ HOST_DISPLAY=1 ./run.sh

Error:
Startup Error: Unable to detect graphics environment

I'm running these commands on Mac OS X, I'm not sure if I'm missing a dependency for the graphics for Android Studio or if it's something else? Any insight would be appreciated, thank you!

ERROR [12/29] RUN chown android:android /androidstudio-data

Host system:

  • Ubuntu 20.04.6 LTS
  • Intel Core i5-9600K
  • 32GB RAM

Getting an error on running ./build.sh :

=> ERROR [12/29] RUN chown android:android /androidstudio-data                                                                                                                                               0.3s
------                                                                                                                                                                                                             
 > [12/29] RUN chown android:android /androidstudio-data:
#0 0.270 chown: cannot access '/androidstudio-data': No such file or directory
------
Dockerfile:28
--------------------
  26 |     
  27 |     VOLUME /androidstudio-data
  28 | >>> RUN chown $USER:$USER /androidstudio-data
  29 |     
  30 |     COPY provisioning/docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh
--------------------
ERROR: failed to solve: process "/bin/sh -c chown $USER:$USER /androidstudio-data" did not complete successfully: exit code: 1

I want to use this with VS Code Remote

My problem is that I'm new to docker, how can I add environment variables that remain after container restart? I want to start the flutter command from the CLI.

Build of Docker will fail since to be based on Ubuntu 17.04 instead of 17.10

An error while building the container happens in the following step:

Step 5/33 : RUN apt-get update && apt-get install -y         build-essential git neovim wget unzip sudo         libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386         libxrender1 libxtst6 libxi6 libfreetype6 libxft2         kvm qemu qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils libnotify4 libglu1 libqt5widgets5 openjdk-8-jdk xvfb         &&     apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

Output:

Ign:1 http://archive.ubuntu.com/ubuntu zesty InRelease
Ign:2 http://security.ubuntu.com/ubuntu zesty-security InRelease
Ign:3 http://archive.ubuntu.com/ubuntu zesty-updates InRelease
Ign:4 http://security.ubuntu.com/ubuntu zesty-security Release
Ign:5 http://archive.ubuntu.com/ubuntu zesty-backports InRelease
Ign:6 http://security.ubuntu.com/ubuntu zesty-security/universe Sources
Ign:7 http://archive.ubuntu.com/ubuntu zesty Release
Ign:8 http://security.ubuntu.com/ubuntu zesty-security/restricted amd64 Packages
Ign:9 http://archive.ubuntu.com/ubuntu zesty-updates Release
Ign:10 http://security.ubuntu.com/ubuntu zesty-security/main i386 Packages
Ign:11 http://archive.ubuntu.com/ubuntu zesty-backports Release
Ign:12 http://security.ubuntu.com/ubuntu zesty-security/universe i386 Packages
Ign:13 http://security.ubuntu.com/ubuntu zesty-security/universe amd64 Packages
Ign:14 http://archive.ubuntu.com/ubuntu zesty/universe Sources
Ign:15 http://security.ubuntu.com/ubuntu zesty-security/multiverse all Packages
Ign:16 http://archive.ubuntu.com/ubuntu zesty/universe all Packages
Ign:17 http://security.ubuntu.com/ubuntu zesty-security/restricted all Packages
Ign:18 http://archive.ubuntu.com/ubuntu zesty/main i386 Packages
Ign:19 http://archive.ubuntu.com/ubuntu zesty/main all Packages
Ign:20 http://security.ubuntu.com/ubuntu zesty-security/multiverse i386 Packages
Ign:21 http://archive.ubuntu.com/ubuntu zesty/main amd64 Packages
Ign:22 http://security.ubuntu.com/ubuntu zesty-security/universe all Packages
Ign:23 http://archive.ubuntu.com/ubuntu zesty/universe amd64 Packages
Ign:24 http://security.ubuntu.com/ubuntu zesty-security/main all Packages
Ign:25 http://archive.ubuntu.com/ubuntu zesty/universe i386 Packages
Ign:26 http://security.ubuntu.com/ubuntu zesty-security/main amd64 Packages
Ign:27 http://archive.ubuntu.com/ubuntu zesty/restricted all Packages
Ign:28 http://security.ubuntu.com/ubuntu zesty-security/restricted i386 Packages
Ign:29 http://archive.ubuntu.com/ubuntu zesty/multiverse all Packages
Ign:30 http://security.ubuntu.com/ubuntu zesty-security/multiverse amd64 Packages
Ign:31 http://archive.ubuntu.com/ubuntu zesty/multiverse amd64 Packages
Ign:6 http://security.ubuntu.com/ubuntu zesty-security/universe Sources
Ign:32 http://archive.ubuntu.com/ubuntu zesty/multiverse i386 Packages
Ign:8 http://security.ubuntu.com/ubuntu zesty-security/restricted amd64 Packages
Ign:33 http://archive.ubuntu.com/ubuntu zesty/restricted amd64 Packages
Ign:10 http://security.ubuntu.com/ubuntu zesty-security/main i386 Packages
Ign:34 http://archive.ubuntu.com/ubuntu zesty/restricted i386 Packages
Ign:12 http://security.ubuntu.com/ubuntu zesty-security/universe i386 Packages
Ign:35 http://archive.ubuntu.com/ubuntu zesty-updates/universe Sources
Ign:13 http://security.ubuntu.com/ubuntu zesty-security/universe amd64 Packages
Ign:36 http://archive.ubuntu.com/ubuntu zesty-updates/restricted i386 Packages
Ign:15 http://security.ubuntu.com/ubuntu zesty-security/multiverse all Packages
Ign:37 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse i386 Packages
Ign:17 http://security.ubuntu.com/ubuntu zesty-security/restricted all Packages
Ign:38 http://archive.ubuntu.com/ubuntu zesty-updates/universe amd64 Packages
Ign:20 http://security.ubuntu.com/ubuntu zesty-security/multiverse i386 Packages
Ign:39 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse amd64 Packages
Ign:40 http://archive.ubuntu.com/ubuntu zesty-updates/universe i386 Packages
Ign:22 http://security.ubuntu.com/ubuntu zesty-security/universe all Packages
Ign:24 http://security.ubuntu.com/ubuntu zesty-security/main all Packages
Ign:41 http://archive.ubuntu.com/ubuntu zesty-updates/restricted all Packages
Ign:26 http://security.ubuntu.com/ubuntu zesty-security/main amd64 Packages
Ign:42 http://archive.ubuntu.com/ubuntu zesty-updates/main amd64 Packages
Ign:28 http://security.ubuntu.com/ubuntu zesty-security/restricted i386 Packages
Ign:43 http://archive.ubuntu.com/ubuntu zesty-updates/main i386 Packages
Ign:30 http://security.ubuntu.com/ubuntu zesty-security/multiverse amd64 Packages
Ign:44 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse all Packages
Ign:6 http://security.ubuntu.com/ubuntu zesty-security/universe Sources
Ign:45 http://archive.ubuntu.com/ubuntu zesty-updates/main all Packages
Ign:8 http://security.ubuntu.com/ubuntu zesty-security/restricted amd64 Packages
Ign:46 http://archive.ubuntu.com/ubuntu zesty-updates/restricted amd64 Packages
Ign:10 http://security.ubuntu.com/ubuntu zesty-security/main i386 Packages
Ign:47 http://archive.ubuntu.com/ubuntu zesty-updates/universe all Packages
Ign:12 http://security.ubuntu.com/ubuntu zesty-security/universe i386 Packages
Ign:48 http://archive.ubuntu.com/ubuntu zesty-backports/main i386 Packages
Ign:13 http://security.ubuntu.com/ubuntu zesty-security/universe amd64 Packages
Ign:49 http://archive.ubuntu.com/ubuntu zesty-backports/main all Packages
Ign:15 http://security.ubuntu.com/ubuntu zesty-security/multiverse all Packages
Ign:50 http://archive.ubuntu.com/ubuntu zesty-backports/restricted all Packages
Ign:17 http://security.ubuntu.com/ubuntu zesty-security/restricted all Packages
Ign:51 http://archive.ubuntu.com/ubuntu zesty-backports/universe all Packages
Ign:20 http://security.ubuntu.com/ubuntu zesty-security/multiverse i386 Packages
Ign:52 http://archive.ubuntu.com/ubuntu zesty-backports/universe amd64 Packages
Ign:22 http://security.ubuntu.com/ubuntu zesty-security/universe all Packages
Ign:53 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse all Packages
Ign:24 http://security.ubuntu.com/ubuntu zesty-security/main all Packages
Ign:54 http://archive.ubuntu.com/ubuntu zesty-backports/restricted i386 Packages
Ign:26 http://security.ubuntu.com/ubuntu zesty-security/main amd64 Packages
Ign:55 http://archive.ubuntu.com/ubuntu zesty-backports/restricted amd64 Packages
Ign:28 http://security.ubuntu.com/ubuntu zesty-security/restricted i386 Packages
Ign:56 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse i386 Packages
Ign:30 http://security.ubuntu.com/ubuntu zesty-security/multiverse amd64 Packages
Ign:57 http://archive.ubuntu.com/ubuntu zesty-backports/universe i386 Packages
Ign:6 http://security.ubuntu.com/ubuntu zesty-security/universe Sources
Ign:58 http://archive.ubuntu.com/ubuntu zesty-backports/main amd64 Packages
Ign:8 http://security.ubuntu.com/ubuntu zesty-security/restricted amd64 Packages
Ign:59 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse amd64 Packages
Ign:10 http://security.ubuntu.com/ubuntu zesty-security/main i386 Packages
Ign:14 http://archive.ubuntu.com/ubuntu zesty/universe Sources
Ign:12 http://security.ubuntu.com/ubuntu zesty-security/universe i386 Packages
Ign:16 http://archive.ubuntu.com/ubuntu zesty/universe all Packages
Ign:13 http://security.ubuntu.com/ubuntu zesty-security/universe amd64 Packages
Ign:18 http://archive.ubuntu.com/ubuntu zesty/main i386 Packages
Ign:15 http://security.ubuntu.com/ubuntu zesty-security/multiverse all Packages
Ign:19 http://archive.ubuntu.com/ubuntu zesty/main all Packages
Ign:21 http://archive.ubuntu.com/ubuntu zesty/main amd64 Packages
Ign:17 http://security.ubuntu.com/ubuntu zesty-security/restricted all Packages
Ign:20 http://security.ubuntu.com/ubuntu zesty-security/multiverse i386 Packages
Ign:23 http://archive.ubuntu.com/ubuntu zesty/universe amd64 Packages
Ign:22 http://security.ubuntu.com/ubuntu zesty-security/universe all Packages
Ign:25 http://archive.ubuntu.com/ubuntu zesty/universe i386 Packages
Ign:24 http://security.ubuntu.com/ubuntu zesty-security/main all Packages
Ign:27 http://archive.ubuntu.com/ubuntu zesty/restricted all Packages
Ign:26 http://security.ubuntu.com/ubuntu zesty-security/main amd64 Packages
Ign:29 http://archive.ubuntu.com/ubuntu zesty/multiverse all Packages
Ign:28 http://security.ubuntu.com/ubuntu zesty-security/restricted i386 Packages
Ign:31 http://archive.ubuntu.com/ubuntu zesty/multiverse amd64 Packages
Ign:30 http://security.ubuntu.com/ubuntu zesty-security/multiverse amd64 Packages
Ign:32 http://archive.ubuntu.com/ubuntu zesty/multiverse i386 Packages
Ign:6 http://security.ubuntu.com/ubuntu zesty-security/universe Sources
Ign:33 http://archive.ubuntu.com/ubuntu zesty/restricted amd64 Packages
Ign:8 http://security.ubuntu.com/ubuntu zesty-security/restricted amd64 Packages
Ign:34 http://archive.ubuntu.com/ubuntu zesty/restricted i386 Packages
Ign:10 http://security.ubuntu.com/ubuntu zesty-security/main i386 Packages
Ign:35 http://archive.ubuntu.com/ubuntu zesty-updates/universe Sources
Ign:12 http://security.ubuntu.com/ubuntu zesty-security/universe i386 Packages
Ign:36 http://archive.ubuntu.com/ubuntu zesty-updates/restricted i386 Packages
Ign:13 http://security.ubuntu.com/ubuntu zesty-security/universe amd64 Packages
Ign:37 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse i386 Packages
Ign:15 http://security.ubuntu.com/ubuntu zesty-security/multiverse all Packages
Ign:38 http://archive.ubuntu.com/ubuntu zesty-updates/universe amd64 Packages
Ign:17 http://security.ubuntu.com/ubuntu zesty-security/restricted all Packages
Ign:20 http://security.ubuntu.com/ubuntu zesty-security/multiverse i386 Packages
Ign:39 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse amd64 Packages
Ign:22 http://security.ubuntu.com/ubuntu zesty-security/universe all Packages
Ign:40 http://archive.ubuntu.com/ubuntu zesty-updates/universe i386 Packages
Ign:24 http://security.ubuntu.com/ubuntu zesty-security/main all Packages
Ign:41 http://archive.ubuntu.com/ubuntu zesty-updates/restricted all Packages
Ign:42 http://archive.ubuntu.com/ubuntu zesty-updates/main amd64 Packages
Ign:26 http://security.ubuntu.com/ubuntu zesty-security/main amd64 Packages
Ign:43 http://archive.ubuntu.com/ubuntu zesty-updates/main i386 Packages
Ign:28 http://security.ubuntu.com/ubuntu zesty-security/restricted i386 Packages
Ign:44 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse all Packages
Ign:30 http://security.ubuntu.com/ubuntu zesty-security/multiverse amd64 Packages
Ign:45 http://archive.ubuntu.com/ubuntu zesty-updates/main all Packages
Err:6 http://security.ubuntu.com/ubuntu zesty-security/universe Sources
  404  Not Found [IP: 91.189.88.162 80]
Ign:46 http://archive.ubuntu.com/ubuntu zesty-updates/restricted amd64 Packages
Ign:8 http://security.ubuntu.com/ubuntu zesty-security/restricted amd64 Packages
Ign:47 http://archive.ubuntu.com/ubuntu zesty-updates/universe all Packages
Ign:10 http://security.ubuntu.com/ubuntu zesty-security/main i386 Packages
Ign:48 http://archive.ubuntu.com/ubuntu zesty-backports/main i386 Packages
Ign:12 http://security.ubuntu.com/ubuntu zesty-security/universe i386 Packages
Ign:49 http://archive.ubuntu.com/ubuntu zesty-backports/main all Packages
Ign:50 http://archive.ubuntu.com/ubuntu zesty-backports/restricted all Packages
Ign:13 http://security.ubuntu.com/ubuntu zesty-security/universe amd64 Packages
Ign:15 http://security.ubuntu.com/ubuntu zesty-security/multiverse all Packages
Ign:51 http://archive.ubuntu.com/ubuntu zesty-backports/universe all Packages
Ign:17 http://security.ubuntu.com/ubuntu zesty-security/restricted all Packages
Ign:52 http://archive.ubuntu.com/ubuntu zesty-backports/universe amd64 Packages
Ign:20 http://security.ubuntu.com/ubuntu zesty-security/multiverse i386 Packages
Ign:53 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse all Packages
Ign:22 http://security.ubuntu.com/ubuntu zesty-security/universe all Packages
Ign:54 http://archive.ubuntu.com/ubuntu zesty-backports/restricted i386 Packages
Ign:24 http://security.ubuntu.com/ubuntu zesty-security/main all Packages
Ign:55 http://archive.ubuntu.com/ubuntu zesty-backports/restricted amd64 Packages
Ign:26 http://security.ubuntu.com/ubuntu zesty-security/main amd64 Packages
Ign:56 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse i386 Packages
Ign:57 http://archive.ubuntu.com/ubuntu zesty-backports/universe i386 Packages
Ign:58 http://archive.ubuntu.com/ubuntu zesty-backports/main amd64 Packages
Ign:59 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse amd64 Packages
Ign:14 http://archive.ubuntu.com/ubuntu zesty/universe Sources
Ign:16 http://archive.ubuntu.com/ubuntu zesty/universe all Packages
Ign:18 http://archive.ubuntu.com/ubuntu zesty/main i386 Packages
Ign:19 http://archive.ubuntu.com/ubuntu zesty/main all Packages
Ign:21 http://archive.ubuntu.com/ubuntu zesty/main amd64 Packages
Ign:23 http://archive.ubuntu.com/ubuntu zesty/universe amd64 Packages
Ign:25 http://archive.ubuntu.com/ubuntu zesty/universe i386 Packages
Ign:27 http://archive.ubuntu.com/ubuntu zesty/restricted all Packages
Ign:29 http://archive.ubuntu.com/ubuntu zesty/multiverse all Packages
Ign:31 http://archive.ubuntu.com/ubuntu zesty/multiverse amd64 Packages
Ign:32 http://archive.ubuntu.com/ubuntu zesty/multiverse i386 Packages
Ign:33 http://archive.ubuntu.com/ubuntu zesty/restricted amd64 Packages
Ign:34 http://archive.ubuntu.com/ubuntu zesty/restricted i386 Packages
Ign:35 http://archive.ubuntu.com/ubuntu zesty-updates/universe Sources
Ign:36 http://archive.ubuntu.com/ubuntu zesty-updates/restricted i386 Packages
Ign:37 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse i386 Packages
Ign:38 http://archive.ubuntu.com/ubuntu zesty-updates/universe amd64 Packages
Ign:39 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse amd64 Packages
Ign:40 http://archive.ubuntu.com/ubuntu zesty-updates/universe i386 Packages
Ign:41 http://archive.ubuntu.com/ubuntu zesty-updates/restricted all Packages
Ign:42 http://archive.ubuntu.com/ubuntu zesty-updates/main amd64 Packages
Ign:43 http://archive.ubuntu.com/ubuntu zesty-updates/main i386 Packages
Ign:44 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse all Packages
Ign:45 http://archive.ubuntu.com/ubuntu zesty-updates/main all Packages
Ign:46 http://archive.ubuntu.com/ubuntu zesty-updates/restricted amd64 Packages
Ign:47 http://archive.ubuntu.com/ubuntu zesty-updates/universe all Packages
Ign:48 http://archive.ubuntu.com/ubuntu zesty-backports/main i386 Packages
Ign:49 http://archive.ubuntu.com/ubuntu zesty-backports/main all Packages
Ign:50 http://archive.ubuntu.com/ubuntu zesty-backports/restricted all Packages
Ign:51 http://archive.ubuntu.com/ubuntu zesty-backports/universe all Packages
Ign:52 http://archive.ubuntu.com/ubuntu zesty-backports/universe amd64 Packages
Ign:53 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse all Packages
Ign:54 http://archive.ubuntu.com/ubuntu zesty-backports/restricted i386 Packages
Ign:55 http://archive.ubuntu.com/ubuntu zesty-backports/restricted amd64 Packages
Ign:56 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse i386 Packages
Ign:57 http://archive.ubuntu.com/ubuntu zesty-backports/universe i386 Packages
Ign:58 http://archive.ubuntu.com/ubuntu zesty-backports/main amd64 Packages
Ign:59 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse amd64 Packages
Ign:14 http://archive.ubuntu.com/ubuntu zesty/universe Sources
Ign:16 http://archive.ubuntu.com/ubuntu zesty/universe all Packages
Ign:18 http://archive.ubuntu.com/ubuntu zesty/main i386 Packages
Ign:19 http://archive.ubuntu.com/ubuntu zesty/main all Packages
Ign:21 http://archive.ubuntu.com/ubuntu zesty/main amd64 Packages
Ign:23 http://archive.ubuntu.com/ubuntu zesty/universe amd64 Packages
Ign:25 http://archive.ubuntu.com/ubuntu zesty/universe i386 Packages
Ign:27 http://archive.ubuntu.com/ubuntu zesty/restricted all Packages
Ign:29 http://archive.ubuntu.com/ubuntu zesty/multiverse all Packages
Ign:31 http://archive.ubuntu.com/ubuntu zesty/multiverse amd64 Packages
Ign:32 http://archive.ubuntu.com/ubuntu zesty/multiverse i386 Packages
Ign:33 http://archive.ubuntu.com/ubuntu zesty/restricted amd64 Packages
Ign:34 http://archive.ubuntu.com/ubuntu zesty/restricted i386 Packages
Ign:35 http://archive.ubuntu.com/ubuntu zesty-updates/universe Sources
Ign:36 http://archive.ubuntu.com/ubuntu zesty-updates/restricted i386 Packages
Ign:37 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse i386 Packages
Ign:38 http://archive.ubuntu.com/ubuntu zesty-updates/universe amd64 Packages
Ign:39 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse amd64 Packages
Ign:40 http://archive.ubuntu.com/ubuntu zesty-updates/universe i386 Packages
Ign:41 http://archive.ubuntu.com/ubuntu zesty-updates/restricted all Packages
Ign:42 http://archive.ubuntu.com/ubuntu zesty-updates/main amd64 Packages
Ign:43 http://archive.ubuntu.com/ubuntu zesty-updates/main i386 Packages
Ign:44 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse all Packages
Ign:45 http://archive.ubuntu.com/ubuntu zesty-updates/main all Packages
Ign:46 http://archive.ubuntu.com/ubuntu zesty-updates/restricted amd64 Packages
Ign:47 http://archive.ubuntu.com/ubuntu zesty-updates/universe all Packages
Ign:48 http://archive.ubuntu.com/ubuntu zesty-backports/main i386 Packages
Ign:49 http://archive.ubuntu.com/ubuntu zesty-backports/main all Packages
Ign:50 http://archive.ubuntu.com/ubuntu zesty-backports/restricted all Packages
Ign:51 http://archive.ubuntu.com/ubuntu zesty-backports/universe all Packages
Ign:52 http://archive.ubuntu.com/ubuntu zesty-backports/universe amd64 Packages
Ign:53 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse all Packages
Ign:54 http://archive.ubuntu.com/ubuntu zesty-backports/restricted i386 Packages
Ign:55 http://archive.ubuntu.com/ubuntu zesty-backports/restricted amd64 Packages
Ign:56 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse i386 Packages
Ign:57 http://archive.ubuntu.com/ubuntu zesty-backports/universe i386 Packages
Ign:58 http://archive.ubuntu.com/ubuntu zesty-backports/main amd64 Packages
Ign:59 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse amd64 Packages
Ign:14 http://archive.ubuntu.com/ubuntu zesty/universe Sources
Ign:16 http://archive.ubuntu.com/ubuntu zesty/universe all Packages
Ign:18 http://archive.ubuntu.com/ubuntu zesty/main i386 Packages
Ign:19 http://archive.ubuntu.com/ubuntu zesty/main all Packages
Ign:21 http://archive.ubuntu.com/ubuntu zesty/main amd64 Packages
Ign:23 http://archive.ubuntu.com/ubuntu zesty/universe amd64 Packages
Ign:25 http://archive.ubuntu.com/ubuntu zesty/universe i386 Packages
Ign:27 http://archive.ubuntu.com/ubuntu zesty/restricted all Packages
Ign:29 http://archive.ubuntu.com/ubuntu zesty/multiverse all Packages
Ign:31 http://archive.ubuntu.com/ubuntu zesty/multiverse amd64 Packages
Ign:32 http://archive.ubuntu.com/ubuntu zesty/multiverse i386 Packages
Ign:33 http://archive.ubuntu.com/ubuntu zesty/restricted amd64 Packages
Ign:34 http://archive.ubuntu.com/ubuntu zesty/restricted i386 Packages
Ign:35 http://archive.ubuntu.com/ubuntu zesty-updates/universe Sources
Ign:36 http://archive.ubuntu.com/ubuntu zesty-updates/restricted i386 Packages
Ign:37 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse i386 Packages
Ign:38 http://archive.ubuntu.com/ubuntu zesty-updates/universe amd64 Packages
Ign:39 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse amd64 Packages
Ign:40 http://archive.ubuntu.com/ubuntu zesty-updates/universe i386 Packages
Ign:41 http://archive.ubuntu.com/ubuntu zesty-updates/restricted all Packages
Ign:42 http://archive.ubuntu.com/ubuntu zesty-updates/main amd64 Packages
Ign:43 http://archive.ubuntu.com/ubuntu zesty-updates/main i386 Packages
Ign:44 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse all Packages
Ign:45 http://archive.ubuntu.com/ubuntu zesty-updates/main all Packages
Ign:46 http://archive.ubuntu.com/ubuntu zesty-updates/restricted amd64 Packages
Ign:47 http://archive.ubuntu.com/ubuntu zesty-updates/universe all Packages
Ign:48 http://archive.ubuntu.com/ubuntu zesty-backports/main i386 Packages
Ign:49 http://archive.ubuntu.com/ubuntu zesty-backports/main all Packages
Ign:50 http://archive.ubuntu.com/ubuntu zesty-backports/restricted all Packages
Ign:51 http://archive.ubuntu.com/ubuntu zesty-backports/universe all Packages
Ign:52 http://archive.ubuntu.com/ubuntu zesty-backports/universe amd64 Packages
Ign:53 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse all Packages
Ign:54 http://archive.ubuntu.com/ubuntu zesty-backports/restricted i386 Packages
Ign:55 http://archive.ubuntu.com/ubuntu zesty-backports/restricted amd64 Packages
Ign:56 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse i386 Packages
Ign:57 http://archive.ubuntu.com/ubuntu zesty-backports/universe i386 Packages
Ign:58 http://archive.ubuntu.com/ubuntu zesty-backports/main amd64 Packages
Ign:59 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse amd64 Packages
Err:14 http://archive.ubuntu.com/ubuntu zesty/universe Sources
  404  Not Found [IP: 91.189.88.152 80]
Ign:16 http://archive.ubuntu.com/ubuntu zesty/universe all Packages
Ign:18 http://archive.ubuntu.com/ubuntu zesty/main i386 Packages
Ign:19 http://archive.ubuntu.com/ubuntu zesty/main all Packages
Ign:21 http://archive.ubuntu.com/ubuntu zesty/main amd64 Packages
Ign:23 http://archive.ubuntu.com/ubuntu zesty/universe amd64 Packages
Ign:25 http://archive.ubuntu.com/ubuntu zesty/universe i386 Packages
Ign:27 http://archive.ubuntu.com/ubuntu zesty/restricted all Packages
Ign:29 http://archive.ubuntu.com/ubuntu zesty/multiverse all Packages
Ign:31 http://archive.ubuntu.com/ubuntu zesty/multiverse amd64 Packages
Ign:32 http://archive.ubuntu.com/ubuntu zesty/multiverse i386 Packages
Err:35 http://archive.ubuntu.com/ubuntu zesty-updates/universe Sources
  404  Not Found [IP: 91.189.88.152 80]
Ign:36 http://archive.ubuntu.com/ubuntu zesty-updates/restricted i386 Packages
Ign:37 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse i386 Packages
Ign:38 http://archive.ubuntu.com/ubuntu zesty-updates/universe amd64 Packages
Ign:39 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse amd64 Packages
Ign:40 http://archive.ubuntu.com/ubuntu zesty-updates/universe i386 Packages
Ign:41 http://archive.ubuntu.com/ubuntu zesty-updates/restricted all Packages
Ign:42 http://archive.ubuntu.com/ubuntu zesty-updates/main amd64 Packages
Ign:43 http://archive.ubuntu.com/ubuntu zesty-updates/main i386 Packages
Ign:44 http://archive.ubuntu.com/ubuntu zesty-updates/multiverse all Packages
Ign:45 http://archive.ubuntu.com/ubuntu zesty-updates/main all Packages
Err:48 http://archive.ubuntu.com/ubuntu zesty-backports/main i386 Packages
  404  Not Found [IP: 91.189.88.152 80]
Ign:49 http://archive.ubuntu.com/ubuntu zesty-backports/main all Packages
Ign:50 http://archive.ubuntu.com/ubuntu zesty-backports/restricted all Packages
Ign:51 http://archive.ubuntu.com/ubuntu zesty-backports/universe all Packages
Ign:52 http://archive.ubuntu.com/ubuntu zesty-backports/universe amd64 Packages
Ign:53 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse all Packages
Ign:54 http://archive.ubuntu.com/ubuntu zesty-backports/restricted i386 Packages
Ign:55 http://archive.ubuntu.com/ubuntu zesty-backports/restricted amd64 Packages
Ign:56 http://archive.ubuntu.com/ubuntu zesty-backports/multiverse i386 Packages
Ign:57 http://archive.ubuntu.com/ubuntu zesty-backports/universe i386 Packages
Ign:58 http://archive.ubuntu.com/ubuntu zesty-backports/main amd64 Packages
Reading package lists...
W: The repository 'http://security.ubuntu.com/ubuntu zesty-security Release' does not have a Release file.
W: The repository 'http://archive.ubuntu.com/ubuntu zesty Release' does not have a Release file.
W: The repository 'http://archive.ubuntu.com/ubuntu zesty-updates Release' does not have a Release file.
W: The repository 'http://archive.ubuntu.com/ubuntu zesty-backports Release' does not have a Release file.
E: Failed to fetch http://security.ubuntu.com/ubuntu/dists/zesty-security/universe/source/Sources  404  Not Found [IP: 91.189.88.162 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/zesty/universe/source/Sources  404  Not Found [IP: 91.189.88.152 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/zesty-updates/universe/source/Sources  404  Not Found [IP: 91.189.88.152 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/zesty-backports/main/binary-i386/Packages  404  Not Found [IP: 91.189.88.152 80]
E: Some index files failed to download. They have been ignored, or old ones used instead.

This is related to the deprecation of Ubuntu 17.04 (see https://ubuntuforums.org/showthread.php?t=2382832), so it can be fixed by just replacing FROM ubuntu:17.04 with FROM ubuntu:17.10 in the Dockerfile definition.

can't connect to X11 (Ubuntu 22.04.3 LTS)

Failed to initialize graphics environment

java.awt.AWTError: Can't connect to X11 window server using ':0' as the value of the DISPLAY variable.

(base) utopiah@r15-desktop4090:~/Prototypes/android-studio-docker$ echo $DISPLAY
:0

with in compose.yml having

       # Mount the proper locationm for x11 server if you are running this in native linux
      - /tmp/.X11-unix:/tmp/.X11-unix .
      - android_studio:/androidstudio-data
    environment:
      - DISPLAY=:0 # Set DISPLAY environment variable

Doesn't build. 17.04 repo's no longer exists? Upgrade patch attached

Doesn't build. 17.04 repo's no longer exists?

Maybe update to 18.04 LTS?
I was able to build docker with attached git patch/changes: upgrade-to-18.04.patch.txt

Error log:

Step 5/33 : RUN apt-get update && apt-get install -y         build-essential git neovim wget unzip sudo         libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386         libxrender1 libxtst6 libxi6 libfreetype6 libxft2         kvm qemu qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils libnotify4 libglu1 libqt5widgets5 openjdk-8-jdk xvfb         &&     apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 ---> Running in dc873a0a96ee
Ign:1 http://archive.ubuntu.com/ubuntu artful InRelease
Ign:2 http://security.ubuntu.com/ubuntu artful-security InRelease
Ign:3 http://archive.ubuntu.com/ubuntu artful-updates InRelease
Err:4 http://security.ubuntu.com/ubuntu artful-security Release
  404  Not Found [IP: 91.189.88.31 80]
Ign:5 http://archive.ubuntu.com/ubuntu artful-backports InRelease
Err:6 http://archive.ubuntu.com/ubuntu artful Release
  404  Not Found [IP: 91.189.88.162 80]
Err:7 http://archive.ubuntu.com/ubuntu artful-updates Release
  404  Not Found [IP: 91.189.88.162 80]
Err:8 http://archive.ubuntu.com/ubuntu artful-backports Release
  404  Not Found [IP: 91.189.88.162 80]
Reading package lists...
E: The repository 'http://security.ubuntu.com/ubuntu artful-security Release' does not have a Release file.
E: The repository 'http://archive.ubuntu.com/ubuntu artful Release' does not have a Release file.                         
E: The repository 'http://archive.ubuntu.com/ubuntu artful-updates Release' does not have a Release file.                 
E: The repository 'http://archive.ubuntu.com/ubuntu artful-backports Release' does not have a Release file.               
The command '/bin/sh -c apt-get update && apt-get install -y         build-essential git neovim wget unzip sudo         libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386         libxrender1 libxtst6 libxi6 libfreetype6 libxft2         kvm qemu qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils libnotify4 libglu1 libqt5widgets5 openjdk-8-jdk xvfb         &&     apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*' returned a non-zero code: 100

ava.awt.AWTError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.

Hello!

I am trying to run the successfully built IDE using "HOST_NET=1 ./run.sh" on my Manjaro/XFCE system.
But I get this error message:
java.awt.AWTError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65) at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103) at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82) at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:134) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at java.awt.Toolkit$2.run(Toolkit.java:860) at java.awt.Toolkit$2.run(Toolkit.java:855) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:854) at com.intellij.ui.AppUIUtil.updateFrameClass(AppUIUtil.java:172) at com.intellij.idea.StartupUtil.prepareAndStart(StartupUtil.java:113) at com.intellij.idea.MainImpl.start(MainImpl.java:20) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.ide.plugins.PluginManager.lambda$start$0(PluginManager.java:76) at java.lang.Thread.run(Thread.java:748)

Can you help me with this?
Thank you! :)

Error running on an Intel Mac

On an Intel Mac, I get an error on the line RUN chown android:android /androidstudio-data:. The error is chown: cannot access '/androidstudio-data': No such file or directory. But surely the volume exists due to the VOLUME line preceding the RUN line?

VOLUME /androidstudio-data
RUN chown $USER:$USER /androidstudio-data

Here is the full output:

$ ./build.sh 
[+] Building 416.0s (17/31)                                                                                                              
 => [internal] load build definition from Dockerfile                                                                                0.1s
 => => transferring dockerfile: 1.95kB                                                                                              0.0s
 => [internal] load .dockerignore                                                                                                   0.1s
 => => transferring context: 52B                                                                                                    0.0s
 => [internal] load metadata for docker.io/library/ubuntu:18.04                                                                     5.8s
 => [auth] library/ubuntu:pull token for registry-1.docker.io                                                                       0.0s
 => [internal] load build context                                                                                                   0.1s
 => => transferring context: 3.34kB                                                                                                 0.0s
 => [ 1/26] FROM docker.io/library/ubuntu:18.04@sha256:982d72c16416b09ffd2f71aa381f761422085eda1379dc66b668653607969e38             7.1s
 => => resolve docker.io/library/ubuntu:18.04@sha256:982d72c16416b09ffd2f71aa381f761422085eda1379dc66b668653607969e38               0.0s
 => => sha256:f5cbed4244ba3f663e03aaa70f5a4cd0f1c03ad186c3560b639488e84d9f027d 1.46kB / 1.46kB                                      0.0s
 => => sha256:08a6abff89437fab99b52abbefed82ea907f12845c30eeb94f6b93c69be93166 26.71MB / 26.71MB                                    4.3s
 => => sha256:982d72c16416b09ffd2f71aa381f761422085eda1379dc66b668653607969e38 1.41kB / 1.41kB                                      0.0s
 => => sha256:512274f1739676880585e70eea6a883db7b6d92841b02647b6c92b478356572c 529B / 529B                                          0.0s
 => => extracting sha256:08a6abff89437fab99b52abbefed82ea907f12845c30eeb94f6b93c69be93166                                           2.2s
 => [ 2/26] RUN dpkg --add-architecture i386                                                                                        0.7s
 => [ 3/26] RUN apt-get update && apt-get install -y         build-essential git neovim wget unzip sudo         libc6:i386 libnc  398.2s
 => [ 4/26] RUN groupadd -g 1000 -r android                                                                                         0.5s
 => [ 5/26] RUN useradd -u 1000 -g 1000 --create-home -r android                                                                    0.5s 
 => [ 6/26] RUN adduser android libvirt                                                                                             0.5s 
 => [ 7/26] RUN adduser android kvm                                                                                                 0.5s 
 => [ 8/26] RUN echo "android:android" | chpasswd                                                                                   0.4s 
 => [ 9/26] RUN echo "android ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-android                                                   0.3s 
 => [10/26] RUN usermod -aG sudo android                                                                                            0.4s
 => [11/26] RUN usermod -aG plugdev android                                                                                         0.4s
 => ERROR [12/26] RUN chown android:android /androidstudio-data                                                                     0.3s
------
 > [12/26] RUN chown android:android /androidstudio-data:
#16 0.306 chown: cannot access '/androidstudio-data': No such file or directory
------
executor failed running [/bin/sh -c chown $USER:$USER /androidstudio-data]: exit code: 1

Does anyone have any clues?

Graphics Environment issue for Mac Docker

Hello,

I have been working on this container to run on my workstation and I have made some tweaks as version changes. I have successfully built the container but when I am running via shell script of the docker command I am getting the below error.
Startup Error: Unable to detect graphics environment
I have try to change multiple settings and the changes in the dockerfile but I am still getting same errors, do we have any solution on this?

Thanks

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.