From 4193cbccc8d08a5ffecc411de278e465a48511e5 Mon Sep 17 00:00:00 2001 From: Oleksii Radetskyi Date: Tue, 3 Oct 2023 22:06:53 +0300 Subject: [PATCH] Android example for 0.15.2 (#1027) * android examples: upgrade gradlew * android examples: upgrade gradle plugin * increase versions of other tools * README for android example --- docs/examples/android/README.md | 17 ++ docs/examples/android/app/build.gradle | 9 +- .../android/app/src/main/AndroidManifest.xml | 12 +- docs/examples/android/build.gradle | 5 +- .../android/gradle/wrapper/gradle-wrapper.jar | Bin 58910 -> 61624 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 +- docs/examples/android/gradlew | 269 +++++++++++------- docs/examples/android/gradlew.bat | 34 +-- 8 files changed, 209 insertions(+), 140 deletions(-) create mode 100644 docs/examples/android/README.md diff --git a/docs/examples/android/README.md b/docs/examples/android/README.md new file mode 100644 index 000000000..221a842f4 --- /dev/null +++ b/docs/examples/android/README.md @@ -0,0 +1,17 @@ +# Android example + +## Compile +``` +./gradlew clean build +``` + +## Install +``` +./gradlew installDebug +``` +You should see the empty screen with the message "Hello from themis!" and title "ThemisTestApp". +Also, you may to run `adb logcat | grep SMC` and see something like this: +```agsl +10-03 21:36:57.842 16956 16956 D SMC : encrypted string = AAEBQQwAAAAQAAAADQAAABYAAAASizR1/IPS4UYioLPeH8VpdgvaXl9875aZorAZ/soEABAAa/ARqQwo6liyQrluj06zohARxU/0LBNYb3UvKAc= +10-03 21:36:58.776 16956 16956 D SMC : decrypted data = hello message +``` diff --git a/docs/examples/android/app/build.gradle b/docs/examples/android/app/build.gradle index a442b632b..5c32eab0d 100644 --- a/docs/examples/android/app/build.gradle +++ b/docs/examples/android/app/build.gradle @@ -2,12 +2,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { - compileSdkVersion 29 - buildToolsVersion '29.0.2' + compileSdkVersion 33 + buildToolsVersion '34.0.0' defaultConfig { applicationId "com.cossacklabs.themis.android.example" minSdkVersion 25 - targetSdkVersion 29 + targetSdkVersion 33 versionCode 1 versionName "1.0" testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' @@ -20,6 +20,7 @@ android { } productFlavors { } + namespace 'com.cossacklabs.themis.android.example' } dependencies { @@ -29,7 +30,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' testImplementation 'junit:junit:4.12' - implementation 'com.cossacklabs.com:themis:0.14.0' + implementation 'com.cossacklabs.com:themis:0.15.2' implementation "androidx.core:core-ktx:1.3.2" //noinspection GradleDependency: we use slightly outdated "kotlin_version" on purpose implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" diff --git a/docs/examples/android/app/src/main/AndroidManifest.xml b/docs/examples/android/app/src/main/AndroidManifest.xml index 431368e48..881171d0f 100644 --- a/docs/examples/android/app/src/main/AndroidManifest.xml +++ b/docs/examples/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + @@ -12,20 +11,25 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + + - + + diff --git a/docs/examples/android/build.gradle b/docs/examples/android/build.gradle index 7234a068b..2515ad73d 100644 --- a/docs/examples/android/build.gradle +++ b/docs/examples/android/build.gradle @@ -5,15 +5,14 @@ // https://developer.android.com/studio/build/jcenter-migration buildscript { - ext.kotlin_version = '1.4.32' + ext.kotlin_version = '1.6.21' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.3' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/docs/examples/android/gradle/wrapper/gradle-wrapper.jar b/docs/examples/android/gradle/wrapper/gradle-wrapper.jar index 62d4c053550b91381bbd28b1afc82d634bf73a8a..afba109285af78dbd2a1d187e33ac4f87c76e392 100644 GIT binary patch delta 39181 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 uR+z5v`|mHIu{ipW>?k delta 36594 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 diff --git a/docs/examples/android/gradle/wrapper/gradle-wrapper.properties b/docs/examples/android/gradle/wrapper/gradle-wrapper.properties index 622ab64a3..4e86b9270 100644 --- a/docs/examples/android/gradle/wrapper/gradle-wrapper.properties +++ b/docs/examples/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/docs/examples/android/gradlew b/docs/examples/android/gradlew index fbd7c5158..65dcd68d6 100755 --- a/docs/examples/android/gradlew +++ b/docs/examples/android/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,101 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # 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 +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # 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 - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 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" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + 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 @@ -106,80 +140,105 @@ 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 +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac 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 +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; 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 +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # 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\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg 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; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# -# 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" +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/docs/examples/android/gradlew.bat b/docs/examples/android/gradlew.bat index a9f778a7a..6689b85be 100644 --- a/docs/examples/android/gradlew.bat +++ b/docs/examples/android/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -54,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -64,21 +65,6 @@ 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 @@ -86,17 +72,19 @@ 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% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 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 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal