From a8dbcd21cfee84553f83fdd1d0765980c17827be Mon Sep 17 00:00:00 2001 From: PeratX Date: Mon, 23 May 2022 14:48:56 +0800 Subject: [PATCH] update gradle wrapper and remove travis, using github actions --- .github/workflows/build.yml | 22 ++ .travis.yml | 21 -- README.md | 5 +- gradle/wrapper/gradle-wrapper.jar | Bin 58702 -> 59821 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 291 +++++++++++++---------- gradlew.bat | 25 +- 7 files changed, 202 insertions(+), 164 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..764ed35 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,22 @@ +on: [ push ] + +name: Test build + +jobs: + build: + name: Build APK + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup JDK + uses: actions/setup-java@v3 + with: + java-version: 1.8 + - name: Build APK + run: bash ./gradlew assemblePureDebug --stacktrace + - name: Upload APK + uses: actions/upload-artifact@v3 + with: + name: apk + path: app/build/outputs/apk/pure/debug/*.apk diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a25a745..0000000 --- a/.travis.yml +++ /dev/null @@ -1,21 +0,0 @@ -language: android -jdk: oraclejdk8 -dist: xenial -git: - depth: 1 -android: - components: - - tools - - platform-tools - - build-tools-29.0.2 - - android-29 - - extra-android-support - - extra-google-m2repository - - extra-android-m2repository - licenses: - - '.+' -script: - - chmod 777 gradlew - - ./gradlew clean assemblePureDebug -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/README.md b/README.md index af83fce..f6ae29c 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,8 @@ # iTXTech Daedalus -[![Build Status](https://travis-ci.org/iTXTech/Daedalus.svg?branch=master)](https://travis-ci.org/iTXTech/Daedalus) - __No root required Android DNS modifier and Hosts/DNSMasq resolver.__ -## Installation -* __[Jenkins](http://dev.itxtech.org:10298/job/Daedalus/)__ - Debug signature +## Installations * __[Releases](https://github.com/iTXTech/Daedalus/releases)__ - Release signature * __[Play Test](https://play.google.com/apps/testing/org.itxtech.daedalus)__ - Release signature diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index cc4fdc293d0e50b0ad9b65c16e7ddd1db2f6025b..41d9927a4d4fb3f96a785543079b8df6723c946b 100644 GIT binary patch delta 24725 zcmY(JQ+J?U*R0dAZQHhO+qP}pvC*+@vt!#v$L`qasDu5CckGkz7p#-HYF@Ld=BB{v zmcbeWVGw*;^#<6%K|p>(fq;mlIGbRm^g+XWd?(ROZwo}+1-OCfhwuOVV| z3=j+4?qA5KK-Uf#0`r}=z6Yk{|vn5ZkfxxJ?-$X=nRW6>R|EE4 zp(cUBv7mGj(@n7K8kt0!f6W{nrh16v_)1B$#ZKCiSC2GEG~MO9t`HWITe6C zQ+Ld2mWnLfPWk3);G*j4(JnhkSA2HD4YQ(_qwP?ZeVcN+kv+Mu;Jr0{TruX9G2&|M z$Jk_Dk;1Twf01l8q;5#-rM3^Ty-|#_SJd J3d9^w@rqwJXg^8C3UdNCVD++rEf^ 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�oh2z1G?BZkDpii< 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 \(.*\)$') - 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_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=$(basename "$0") +APP_BASE_NAME=${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='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum -warn() { - echo "$*" -} +warn () { + echo "$*" +} >&2 -die() { - echo - echo "$*" - echo - exit 1 -} +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 + # 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 +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 + 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. + 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 +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + 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") +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - # 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 + JAVACMD=$( cygpath --unix "$JAVACMD" ) - 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=$(expr $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 + # Now convert the arguments - kludge to limit ourselves to /bin/sh + 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 + # 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 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. -# 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" +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# 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. +# + +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/gradlew.bat b/gradlew.bat index 9618d8d..107acd3 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @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="-Xmx64m" "-Xms64m" @@ -37,7 +40,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%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -51,7 +54,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% @@ -61,28 +64,14 @@ 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% +"%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