diff options
author | asuonpaa <34128694+asuonpaa@users.noreply.github.com> | 2019-11-26 16:22:31 +0200 |
---|---|---|
committer | dan sinclair <dsinclair@google.com> | 2019-11-26 09:22:31 -0500 |
commit | 1a9b6430612222b02b2ee5302bd37df37b89c1e6 (patch) | |
tree | cc5c56cc0f34fa30984c86182855c72674ddc5bf /android_gradle | |
parent | ccaac3ebf225f5084f5c0676288714686629f394 (diff) | |
download | amber-1a9b6430612222b02b2ee5302bd37df37b89c1e6.tar.gz |
Android Gradle project files (#717)
Part of #706
Diffstat (limited to 'android_gradle')
-rw-r--r-- | android_gradle/.gitignore | 15 | ||||
-rwxr-xr-x | android_gradle/amber.sh | 38 | ||||
-rw-r--r-- | android_gradle/app/build.gradle | 49 | ||||
-rw-r--r-- | android_gradle/app/jniLibs/.gitignore | 1 | ||||
-rw-r--r-- | android_gradle/app/src/androidTest/AndroidManifest.xml | 7 | ||||
-rw-r--r-- | android_gradle/app/src/androidTest/java/com/google/amber/AmberLauncher.java | 59 | ||||
-rw-r--r-- | android_gradle/app/src/main/AndroidManifest.xml | 14 | ||||
-rw-r--r-- | android_gradle/app/src/main/java/com/google/amber/Amber.java | 23 | ||||
-rw-r--r-- | android_gradle/build.gradle | 28 | ||||
-rw-r--r-- | android_gradle/gradle.properties | 20 | ||||
-rw-r--r-- | android_gradle/gradle/wrapper/gradle-wrapper.jar | bin | 0 -> 54329 bytes | |||
-rw-r--r-- | android_gradle/gradle/wrapper/gradle-wrapper.properties | 6 | ||||
-rwxr-xr-x | android_gradle/gradlew | 172 | ||||
-rw-r--r-- | android_gradle/gradlew.bat | 84 | ||||
-rw-r--r-- | android_gradle/settings.gradle | 2 |
15 files changed, 518 insertions, 0 deletions
diff --git a/android_gradle/.gitignore b/android_gradle/.gitignore new file mode 100644 index 0000000..2c64069 --- /dev/null +++ b/android_gradle/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/misc.xml +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +build/ +/captures +.externalNativeBuild +.cxx diff --git a/android_gradle/amber.sh b/android_gradle/amber.sh new file mode 100755 index 0000000..f919741 --- /dev/null +++ b/android_gradle/amber.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +# Copyright 2019 The Amber Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +args=() +index=1 + +# The @Q expansion operator requires Bash 4.4. + +for arg in "$@" +do +args+=("-e") +args+=("arg${index}") +args+=("${arg}") +index=$((index+1)) +done + +adb shell rm -f /sdcard/amber_stdout.txt +adb shell rm -f /sdcard/amber_stderr.txt +adb shell am instrument -w \ + -e stdout /sdcard/amber_stdout.txt \ + -e stderr /sdcard/amber_stderr.txt \ + "${args[@]@Q}" \ + com.google.amber.test/androidx.test.runner.AndroidJUnitRunner +adb shell cat /sdcard/amber_stdout.txt +adb shell cat /sdcard/amber_stderr.txt diff --git a/android_gradle/app/build.gradle b/android_gradle/app/build.gradle new file mode 100644 index 0000000..40c4c54 --- /dev/null +++ b/android_gradle/app/build.gradle @@ -0,0 +1,49 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 29 + buildToolsVersion "29.0.2" + + defaultConfig { + applicationId "com.google.amber" + minSdkVersion 24 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + sourceSets { + androidTest.manifest.srcFile "src/androidTest/AndroidManifest.xml" + } + + dependencies { + androidTestImplementation 'androidx.test:runner:1.1.0' + androidTestImplementation 'androidx.test:rules:1.1.0' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt') + } + } + + sourceSets { + main { + jniLibs.srcDirs = ["jniLibs"] + } + } + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' +} diff --git a/android_gradle/app/jniLibs/.gitignore b/android_gradle/app/jniLibs/.gitignore new file mode 100644 index 0000000..f935021 --- /dev/null +++ b/android_gradle/app/jniLibs/.gitignore @@ -0,0 +1 @@ +!.gitignore diff --git a/android_gradle/app/src/androidTest/AndroidManifest.xml b/android_gradle/app/src/androidTest/AndroidManifest.xml new file mode 100644 index 0000000..2c91852 --- /dev/null +++ b/android_gradle/app/src/androidTest/AndroidManifest.xml @@ -0,0 +1,7 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.google.amber.test"> + + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <application android:requestLegacyExternalStorage="true"> + </application> +</manifest> diff --git a/android_gradle/app/src/androidTest/java/com/google/amber/AmberLauncher.java b/android_gradle/app/src/androidTest/java/com/google/amber/AmberLauncher.java new file mode 100644 index 0000000..7755245 --- /dev/null +++ b/android_gradle/app/src/androidTest/java/com/google/amber/AmberLauncher.java @@ -0,0 +1,59 @@ +// Copyright 2019 The Amber Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.amber; + +import static org.junit.Assert.assertEquals; +import android.content.Context; +import android.os.Bundle; +import androidx.test.platform.app.InstrumentationRegistry; +import org.junit.Test; +import java.util.ArrayList; +import java.util.List; + +// Instrumented test used for launching Amber. +public class AmberLauncher { + @Test + public void LaunchAmber() { + Context app_context = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.google.amber", app_context.getPackageName()); + + Bundle args = InstrumentationRegistry.getArguments(); + + int arg_index = 1; + List<String> args_list = new ArrayList<>(); + + while (true) { + String arg = args.getString("arg" + arg_index); + if (arg == null) { + break; + } + args_list.add(arg); + ++arg_index; + } + + String stdout_file = args.getString("stdout", "/sdcard/amber_stdout.txt"); + String stderr_file = args.getString("stderr", "/sdcard/amber_stderr.txt"); + + int res = Amber.androidMain(args_list.toArray(new String[0]), stdout_file, stderr_file); + + // If the process crashes during the above call or we call System.exit below, the output + // from `adb shell am instrument ...` will be: + // com.google.amber.AmberLauncher:INSTRUMENTATION_RESULT: shortMsg=Process crashed. + // INSTRUMENTATION_CODE: 0 + if (res != 0) { + System.exit(res); + } + } +} diff --git a/android_gradle/app/src/main/AndroidManifest.xml b/android_gradle/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..caa16a6 --- /dev/null +++ b/android_gradle/app/src/main/AndroidManifest.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.google.amber"> + + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + + <application + android:allowBackup="true" + android:label="Amber" + android:requestLegacyExternalStorage="true" + android:supportsRtl="true"> + </application> + +</manifest> diff --git a/android_gradle/app/src/main/java/com/google/amber/Amber.java b/android_gradle/app/src/main/java/com/google/amber/Amber.java new file mode 100644 index 0000000..8319ccf --- /dev/null +++ b/android_gradle/app/src/main/java/com/google/amber/Amber.java @@ -0,0 +1,23 @@ +// Copyright 2019 The Amber Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.amber; + +public class Amber { + static { + System.loadLibrary("amber_ndk"); + } + + public static native int androidMain(String[] args, String stdout_file, String stderr_file); +} diff --git a/android_gradle/build.gradle b/android_gradle/build.gradle new file mode 100644 index 0000000..8854578 --- /dev/null +++ b/android_gradle/build.gradle @@ -0,0 +1,28 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + + repositories { + google() + jcenter() + maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } + } + dependencies { + classpath 'com.android.tools.build:gradle:4.0.0-alpha01' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android_gradle/gradle.properties b/android_gradle/gradle.properties new file mode 100644 index 0000000..199d16e --- /dev/null +++ b/android_gradle/gradle.properties @@ -0,0 +1,20 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true + diff --git a/android_gradle/gradle/wrapper/gradle-wrapper.jar b/android_gradle/gradle/wrapper/gradle-wrapper.jar Binary files differnew file mode 100644 index 0000000..f6b961f --- /dev/null +++ b/android_gradle/gradle/wrapper/gradle-wrapper.jar diff --git a/android_gradle/gradle/wrapper/gradle-wrapper.properties b/android_gradle/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e74b1c7 --- /dev/null +++ b/android_gradle/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Nov 06 10:00:39 GMT 2019 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.1-all.zip diff --git a/android_gradle/gradlew b/android_gradle/gradlew new file mode 100755 index 0000000..9a27a6c --- /dev/null +++ b/android_gradle/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG=$(dirname "$PRG")"/$link" + fi +done +SAVED="$(pwd)" +cd "$(dirname \"$PRG\")/" >/dev/null +APP_HOME="$(pwd -P)" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=$(basename "$0") + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn() { + echo "$*" +} + +die() { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$(uname)" in +CYGWIN*) + cygwin=true + ;; +Darwin*) + darwin=true + ;; +MINGW*) + msys=true + ;; +NONSTOP*) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ]; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ]; then + MAX_FD_LIMIT=$(ulimit -H -n) + if [ $? -eq 0 ]; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ]; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + APP_HOME=$(cygpath --path --mixed "$APP_HOME") + CLASSPATH=$(cygpath --path --mixed "$CLASSPATH") + JAVACMD=$(cygpath --unix "$JAVACMD") + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=$(find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null) + SEP="" + for dir in $ROOTDIRSRAW; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ]; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@"; do + CHECK=$(echo "$arg" | egrep -c "$OURCYGPATTERN" -) + CHECK2=$(echo "$arg" | egrep -c "^-") ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ]; then ### Added a condition + eval $(echo args$i)=$(cygpath --path --ignore --mixed "$arg") + else + eval $(echo args$i)="\"$arg\"" + fi + i=$((i + 1)) + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save() { + for i; do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/"; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/android_gradle/gradlew.bat b/android_gradle/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/android_gradle/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/android_gradle/settings.gradle b/android_gradle/settings.gradle new file mode 100644 index 0000000..9a979bb --- /dev/null +++ b/android_gradle/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name='Amber' +include ':app' |