From 9092eb47f4b314d626642797b16a7d15092f539c Mon Sep 17 00:00:00 2001 From: Jacek Marchwicki Date: Wed, 21 Jun 2017 13:38:15 +0200 Subject: [PATCH 1/2] Docker with java9 --- README.md | 5 +- ubuntu-16-04-java7-8-9/Dockerfile | 49 ++++++++++++++ ubuntu-16-04-java7-8-9/README.md | 66 +++++++++++++++++++ .../tools/android-accept-licenses.sh | 14 ++++ .../tools/android-wait-for-emulator.sh | 21 ++++++ 5 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 ubuntu-16-04-java7-8-9/Dockerfile create mode 100644 ubuntu-16-04-java7-8-9/README.md create mode 100755 ubuntu-16-04-java7-8-9/tools/android-accept-licenses.sh create mode 100755 ubuntu-16-04-java7-8-9/tools/android-wait-for-emulator.sh diff --git a/README.md b/README.md index 82fe250..fe144a2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # Docker files -* [Building Android ubuntu 16.04 (with NDK)](ubuntu-16-04-java7-8/README.md) -* [Building Android ubuntu 14.04 (with NDK)](java7-8/README.md) +* [Building Android ubuntu 16.04 (with NDK) java(7,8,9)](ubuntu-16-04-java7-8-9/README.md) +* [Building Android ubuntu 16.04 (with NDK) java(7,8)](ubuntu-16-04-java7-8/README.md) +* [Building Android ubuntu 14.04 (with NDK) java(7,8)](java7-8/README.md) ## License diff --git a/ubuntu-16-04-java7-8-9/Dockerfile b/ubuntu-16-04-java7-8-9/Dockerfile new file mode 100644 index 0000000..f3b01b7 --- /dev/null +++ b/ubuntu-16-04-java7-8-9/Dockerfile @@ -0,0 +1,49 @@ +FROM ubuntu:16.04 + +MAINTAINER Jacek Marchwicki "jacek.marchwicki@gmail.com" + +# Install java7 +RUN apt-get update && \ + apt-get install -y software-properties-common && \ + add-apt-repository -y ppa:webupd8team/java && \ + (echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections) && \ + apt-get update && \ + apt-get install -y oracle-java7-installer && \ + apt-get clean && \ + rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/* +ENV JAVA7_HOME /usr/lib/jvm/java-7-oracle + +# Install java8 +RUN apt-get update && \ + apt-get install -y software-properties-common && \ + add-apt-repository -y ppa:webupd8team/java && \ + (echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections) && \ + apt-get update && \ + apt-get install -y oracle-java8-installer && \ + apt-get clean && \ + rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/* +ENV JAVA8_HOME /usr/lib/jvm/java-8-oracle +ENV JAVA_HOME /usr/lib/jvm/java-8-oracle + +# Install java9 +RUN apt-get update && \ + apt-get install -y software-properties-common && \ + add-apt-repository -y ppa:webupd8team/java && \ + (echo oracle-java9-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections) && \ + apt-get update && \ + apt-get install -y oracle-java9-installer && \ + apt-get clean && \ + rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/* +ENV JAVA9_HOME /usr/lib/jvm/java-9-oracle +ENV JAVA_HOME /usr/lib/jvm/java-9-oracle + +# Install Deps +RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y --force-yes unzip expect git wget libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 python curl libqt5widgets5 && apt-get clean && rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/* + +# Copy install tools +COPY tools /opt/tools +ENV PATH ${PATH}:/opt/tools + +# GO to workspace +RUN mkdir -p /opt/workspace +WORKDIR /opt/workspace diff --git a/ubuntu-16-04-java7-8-9/README.md b/ubuntu-16-04-java7-8-9/README.md new file mode 100644 index 0000000..72398cb --- /dev/null +++ b/ubuntu-16-04-java7-8-9/README.md @@ -0,0 +1,66 @@ +# android java7, java8 and java9 (with NDK) + +This docker is to build Android Gradle project with Java 7, Java 8 and Java 8. +It is available on Docker Hub https://registry.hub.docker.com/u/jacekmarchwicki/android/ . + +Other images with android tools are deprecated + +Ubuntu: 16.04 + +## Setting default java: +* java9 (default) `update-java-alternatives --set java-9-oracle`, directory: `/usr/lib/jvm/java-9-oracle`, env: `$JAVA9_HOME` and `$JAVA_HOME` +* java8 `update-java-alternatives --set java-8-oracle`, directory: `/usr/lib/jvm/java-8-oracle`, env: `$JAVA8_HOME` and `$JAVA_HOME` +* java7 `update-java-alternatives --set java-7-oracle`, directory: `/usr/lib/jvm/java-7-oracle`, env: `$JAVA7_HOME` + +## Build your app inside docker + +Enter to docker in your project directory: + +```bash +docker run --tty --interactive --volume=$(pwd):/opt/workspace --workdir=/opt/workspace --rm jacekmarchwicki/android:ubuntu-16-04-java7-8-9 /bin/sh +``` + +Then inside docker + +```bash +# setup android sdk and licenses +export GRADLE_USER_HOME="$(pwd)/.gradle" +export ANDROID_HOME="$(pwd)/.android" +mkdir -p "${ANDROID_HOME}/licenses" +echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "${ANDROID_HOME}/licenses/android-sdk-license" +echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "${ANDROID_HOME}/licenses/android-sdk-preview-license" +echo -e "\nd975f751698a77b662f1254ddbeed3901e976f5a" > "${ANDROID_HOME}/licenses/intel-android-extra-license" +./gradlew --parallel --stacktrace --no-daemon build +``` + +If you want build with NDK: + +```bash +# setup android sdk and licenses +export GRADLE_USER_HOME="$(pwd)/.gradle" +export ANDROID_HOME="$(pwd)/.android" +export ANDROID_NDK_HOME="${ANDROID_HOME}/ndk-bundle" +mkdir -p "${ANDROID_HOME}" +if [ ! -f ${ANDROID_HOME}/ndk.zip ]; then wget -O ${ANDROID_HOME}/ndk.zip --quiet https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip; fi +if [ ! -d ${ANDROID_NDK_HOME} ]; then unzip ${ANDROID_HOME}/ndk.zip -d /tmp/ > /dev/null; mv /tmp/* ${ANDROID_NDK_HOME}; ls ${ANDROID_NDK_HOME}/; fi +mkdir -p "${ANDROID_HOME}/licenses" +echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "${ANDROID_HOME}/licenses/android-sdk-license" +echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "${ANDROID_HOME}/licenses/android-sdk-preview-license" +echo -e "\nd975f751698a77b662f1254ddbeed3901e976f5a" > "${ANDROID_HOME}/licenses/intel-android-extra-license" +./gradlew --parallel --stacktrace --no-daemon build +``` + +**TIP**: If you are using CI I suggest to cache `.gradle` and `.android` so dependencies will not be downloaded all the time + +## Build image + +```bash +docker build -t jacekmarchwicki/android:ubuntu-16-04-java7-8-9 . +``` + +If building fail you can debug via where `1b372b1f76f2` is partial build + +```bash +docker run --tty --interactive --rm 1b372b1f76f2 /bin/bash +``` + diff --git a/ubuntu-16-04-java7-8-9/tools/android-accept-licenses.sh b/ubuntu-16-04-java7-8-9/tools/android-accept-licenses.sh new file mode 100755 index 0000000..776adf6 --- /dev/null +++ b/ubuntu-16-04-java7-8-9/tools/android-accept-licenses.sh @@ -0,0 +1,14 @@ +#!/usr/bin/expect -f + +set timeout 1800 +set cmd [lindex $argv 0] +set licenses [lindex $argv 1] + +spawn {*}$cmd +expect { + "Do you accept the license '*'*" { + exp_send "y\r" + exp_continue + } + eof +} diff --git a/ubuntu-16-04-java7-8-9/tools/android-wait-for-emulator.sh b/ubuntu-16-04-java7-8-9/tools/android-wait-for-emulator.sh new file mode 100755 index 0000000..ca2d656 --- /dev/null +++ b/ubuntu-16-04-java7-8-9/tools/android-wait-for-emulator.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Originally written by Ralf Kistner , but placed in the public domain + +set +e + +bootanim="" +failcounter=0 +until [[ "$bootanim" =~ "stopped" ]]; do + bootanim=`adb -e shell getprop init.svc.bootanim 2>&1` + echo "$bootanim" + if [[ "$bootanim" =~ "not found" ]]; then + let "failcounter += 1" + if [[ $failcounter -gt 15 ]]; then + echo "Failed to start emulator" + exit 1 + fi + fi + sleep 1 +done +echo "Done" From e11f6cff86996c2510d43753bf7c5f3a275e14fc Mon Sep 17 00:00:00 2001 From: Jacek Marchwicki Date: Wed, 21 Jun 2017 15:13:02 +0200 Subject: [PATCH 2/2] Fix for default version --- ubuntu-16-04-java7-8-9/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/ubuntu-16-04-java7-8-9/Dockerfile b/ubuntu-16-04-java7-8-9/Dockerfile index f3b01b7..146a452 100644 --- a/ubuntu-16-04-java7-8-9/Dockerfile +++ b/ubuntu-16-04-java7-8-9/Dockerfile @@ -23,7 +23,6 @@ RUN apt-get update && \ apt-get clean && \ rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/* ENV JAVA8_HOME /usr/lib/jvm/java-8-oracle -ENV JAVA_HOME /usr/lib/jvm/java-8-oracle # Install java9 RUN apt-get update && \