diff --git a/.gitmodules b/.gitmodules index 44270ed11..83cb4c40f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,7 @@ [submodule "test-app/app/src/main/assets/app/shared"] path = test-app/app/src/main/assets/app/shared url = https://github.com/NativeScript/common-runtime-tests-app.git +[submodule "test-app/build-tools/android-dts-generator"] + path = test-app/build-tools/android-dts-generator + url = https://github.com/NativeScript/android-dts-generator.git + branch = master diff --git a/.travis.yml b/.travis.yml index 25b2b5bdb..34abaf3ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,22 +10,6 @@ env: matrix: include: - - stage: "Static Binding Generator Parser Tests" - language: node_js - node_js: "6" - git: - submodules: false - script: - - cd android-static-binding-generator - - npm install && node run-tests - - cd .. - - stage: "Static Binding Generator Class Generator Tests" - language: android - jdk: oraclejdk8 - git: - submodules: false - script: - - "android-static-binding-generator/project/staticbindinggenerator/gradlew test --project-dir android-static-binding-generator/project/staticbindinggenerator/" - stage: "Build and Tests" sudo: true language: android @@ -41,15 +25,13 @@ matrix: submodules: false script: # (master branch) build the runtime twice - optimized, and regular packages, skip on PRs - # test-app/gradlew runtest will take care of building the runtime for its testing needs + # test-app/gradlew runtests will take care of building the runtime for its testing needs - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bash ./gradlew -PpreReleaseVersion=$PACKAGE_VERSION -PgitCommitVersion=$TRAVIS_COMMIT --stacktrace; fi' - echo no | android create avd --force -n $EMULATOR_NAME-$EMULATOR_API_LEVEL -t android-$EMULATOR_API_LEVEL --abi $ANDROID_ABI -c 12M - emulator -avd $EMULATOR_NAME-$EMULATOR_API_LEVEL -no-skin -no-audio -no-window & - android-wait-for-emulator - - cd test-app - "./gradlew runtest --stacktrace" - adb -e logcat -d 300 - - cd .. before_install: - echo "y" | sdkmanager "cmake;3.6.4111459" - sed -i 's/git@github.com:/https:\/\/github.com\//' .gitmodules diff --git a/android-metadata-generator/build.gradle b/android-metadata-generator/build.gradle deleted file mode 100644 index c686991a2..000000000 --- a/android-metadata-generator/build.gradle +++ /dev/null @@ -1,131 +0,0 @@ -/* -* Packs metadata generator in a .tgz file in ~/dist folder -* To build .tgz -* gradlew packmg -* To build jar -* gradlew jarmg -*/ -apply plugin: "java" - -sourceCompatibility = 1.6 -targetCompatibility = 1.6 - -def isWinOs = System.properties['os.name'].toLowerCase().contains('windows') - -buildscript { - repositories { - jcenter() - } - - dependencies { - classpath 'com.android.tools.build:gradle:1.5.0' - } -} - -sourceSets { - main { - java { - srcDir 'src/src' - } - } - main.output.classesDir = "$rootDir/dist/classes" -} - -dependencies { - compile files("./src/libs/bcel-5.2.jar") - compile files("./src/libs/dx.jar") -} - -task makeDistDir { - def distDir = new File("$rootDir/dist") - distDir.mkdirs() -} - -task cleanDist (type: Delete) { - delete "$rootDir/dist" -} - -task cleanDistForJar (type: Delete) { - delete "$rootDir/dist" -} - -task cleanBuildDir (type: Delete){ - delete "$rootDir/build" -} - -task cleanBuildDirForJar (type: Delete){ - delete "$rootDir/build" -} - -task cleanBin (type: Delete) { - delete "$rootDir/src/bin" -} - -task copyNecessaryFiles { - doLast { - copy { - from "$rootDir/helpers" - into "$rootDir/dist/bin" - } - - copy { - from "$rootDir/package.json" - into "$rootDir/dist" - } - } -} - -task packMetadataGenerator (type: Exec) { - workingDir "$rootDir/dist" - - if(isWinOs) { - commandLine "cmd", "/c", "npm", "pack" - } - else { - commandLine "npm", "pack" - } -} - -jar { - manifest { - attributes("Manifest-Version": "1.0", - "Main-Class": "com.telerik.metadata.Generator") - } - - from { - - configurations.runtime.collect { - it.isDirectory() ? it : zipTree(it) - } - - configurations.compile.collect { - it.isDirectory() ? it : zipTree(it) - } - } -} - -task copyJarToDist (type: Copy) { - from "$rootDir/build/libs/android-metadata-generator.jar" - into "$rootDir/dist" -} - -makeDistDir.dependsOn(cleanDist) -cleanBin.dependsOn(makeDistDir) -compileJava.dependsOn(cleanBin) -cleanBuildDir.dependsOn(compileJava) -copyNecessaryFiles.dependsOn(cleanBuildDir) -packMetadataGenerator.dependsOn(copyNecessaryFiles) - -task packmg { - dependsOn packMetadataGenerator -} - -cleanDistForJar.dependsOn(jar) -copyJarToDist.dependsOn(cleanDistForJar) -cleanBuildDirForJar.dependsOn(copyJarToDist) - -task jarmg { - dependsOn cleanBuildDirForJar -} - - diff --git a/android-metadata-generator/gradle/wrapper/gradle-wrapper.jar b/android-metadata-generator/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 7a3265ee9..000000000 Binary files a/android-metadata-generator/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/android-metadata-generator/gradle/wrapper/gradle-wrapper.properties b/android-metadata-generator/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index f16d26666..000000000 --- a/android-metadata-generator/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-bin.zip diff --git a/android-metadata-generator/gradlew b/android-metadata-generator/gradlew deleted file mode 100755 index cccdd3d51..000000000 --- a/android-metadata-generator/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/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-metadata-generator/gradlew.bat b/android-metadata-generator/gradlew.bat deleted file mode 100644 index f9553162f..000000000 --- a/android-metadata-generator/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@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-metadata-generator/src/src/com/telerik/metadata/Generator.java b/android-metadata-generator/src/src/com/telerik/metadata/Generator.java deleted file mode 100644 index 5eed78077..000000000 --- a/android-metadata-generator/src/src/com/telerik/metadata/Generator.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.telerik.metadata; - -import java.io.File; -import java.io.FileOutputStream; -import java.security.InvalidParameterException; - -public class Generator { - - /** - * @param args - */ - public static void main(String[] args) throws Exception { - String outName = "bin"; - String[] params = null; - - if (args != null && args.length > 0) { - outName = args[0]; - File out = new File(outName); - if (!out.exists()) { - out.mkdir(); - System.out - .println(String - .format("We didn't find the folder you specified ( %s ), so it's going to be created!", - out.getAbsolutePath())); - } - - } else { - throw new InvalidParameterException( - "You need to pass an output directory!"); - } - - if (args.length > 1) { - params = new String[args.length - 1]; - for (int i = 1; i < args.length; i++) { - params[i - 1] = args[i]; - } - } - - if (params == null) { - throw new InvalidParameterException( - "You need to pass a list of jar paths, so metadata can be generated for them!"); - } - - TreeNode root = Builder.build(params); - - FileOutputStream ovs = new FileOutputStream(new File(outName, - "treeValueStream.dat")); - FileStreamWriter outValueStream = new FileStreamWriter(ovs); - - FileOutputStream ons = new FileOutputStream(new File(outName, - "treeNodeStream.dat")); - FileStreamWriter outNodeStream = new FileStreamWriter(ons); - - FileOutputStream oss = new FileOutputStream(new File(outName, - "treeStringsStream.dat")); - FileStreamWriter outStringsStream = new FileStreamWriter(oss); - - new Writer(outNodeStream, outValueStream, outStringsStream) - .writeTree(root); - } -} diff --git a/android-static-binding-generator/.gitignore b/android-static-binding-generator/.gitignore deleted file mode 100644 index c715e8568..000000000 --- a/android-static-binding-generator/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.vscode -project/interfaces-names.txt \ No newline at end of file diff --git a/android-static-binding-generator/README.md b/android-static-binding-generator/README.md deleted file mode 100644 index 00f1bfdbb..000000000 --- a/android-static-binding-generator/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# android-static-binding-generator -This is a tool for javascript static analysis. -* Input: valid javascript code. -* Output: should be generated file with necessary information that is [NativeScript](https://www.nativescript.org/) specific. - -## How to install - -open project folder and run: -``` -npm install -``` - -## Usage with Sublime Text 3 - -* Open `project/parse.js` in Sublime Text 3 -* in Editor, select `Tools/BuildSystem/NodeJs`. You need to have [nodejs](https://nodejs.org/en/) installed. I'm using latest LTS(long term support) currently 4.2.5. -* `Alt+R` to run nodejs in editor - -## How to test -* `npm install` -* `npm test` - -## More information: -* babel: javasript transpiler -* [babylon](https://github.com/babel/babel/tree/master/packages/babylon): babel javascript parser -* [babel handbook](https://github.com/thejameskyle/babel-handbook/blob/master/translations/en/README.md) -* learning from [plugin handbook](https://github.com/thejameskyle/babel-handbook/blob/master/translations/en/plugin-handbook.md) - - diff --git a/android-static-binding-generator/project/build.gradle b/android-static-binding-generator/project/build.gradle deleted file mode 100644 index c4f5d04c8..000000000 --- a/android-static-binding-generator/project/build.gradle +++ /dev/null @@ -1,309 +0,0 @@ -/* -* The android static binding generator will generate bindings for the Javascript code you specify. -*/ - -import groovy.json.JsonSlurper -import groovy.io.FileType -import java.nio.charset.StandardCharsets -import java.nio.file.Files -import java.nio.file.Paths - -def interfaceNamesFileP = "$projectDir/interfaces-names.txt" -def bindingsFileP = "$projectDir/bindings.txt" -def cachedJarsFilePath = "$projectDir/cached.txt" -def jsParserP = "$projectDir/parser/js_parser.js" -def jsFilesParametersP = "$projectDir/jsFilesParameters.txt" - -def webpackWorkersExcludePath = "$rootDir/app/src/main/assets/app/__worker-chunks.json" -def webpackWorkersExcludesList = []; - -def workersExcludeFile = file(webpackWorkersExcludePath); -if (workersExcludeFile.exists()) { - // in case the file exists but is malformed - try { - webpackWorkersExcludesList = new JsonSlurper().parseText(workersExcludeFile.text) - } catch (all) { - println "Malformed workers exclude file at ${webpackWorkersExcludePath}" - } -} - -def absoluteOutDir; -if (project.hasProperty("outDir")) { - absoluteOutDir = project.outDir; - - if (!absoluteOutDir.exists()) { - absoluteOutDir.mkdirs() - } -} - -// def absoluteJsCodeDir = new File("./jsCodeDir").getAbsolutePath()//project.jsCodeDir -def absoluteJsCodeDir; -def jsCodeAbsolutePath; -if (!project.hasProperty("test")) { - println project.jsCodeDir.equals(null) - if(project.jsCodeDir.exists()) { - absoluteJsCodeDir = project.jsCodeDir - jsCodeAbsolutePath = absoluteJsCodeDir.getAbsolutePath() - } else { - logger.log(LogLevel.WARN, "The input jsCodeDir: ${jsCodeDir} folder could not be found. Please make sure you've passed the correct folder containing the .js files that need to be parsed."); - } -} - -def utf8 = StandardCharsets.UTF_8 -def jarsList = "" - -def shouldRun = true -def rootTraversed = false; -def inputJsFiles = new LinkedList (); - -// depends on passed jars and generated interface-names -task generateInterfaceNamesList { - doFirst { - if(!project.hasProperty("test")) { - jarsList = project.jarFiles - def cache = new File(cachedJarsFilePath) - - if (cache.exists()) { - def contents = new String(java.nio.file.Files.readAllBytes(java.nio.file.Paths.get(cachedJarsFilePath)), utf8).trim() - shouldRun = !contents.equals(jarsList.toString()) - } - - if (shouldRun) { - javaexec { - main "-jar" - - def jarsAsStr = jarsList.toString(); - def jarsArr = jarsAsStr.replaceAll(/[\[\]]/, "").split(", ") - - def str = new LinkedList (); - str.add("interfacenamegenerator.jar") - str.addAll(jarsArr) - - logger.info("Task: generateInterfaceNamesList: Call interfacenamegenerator.jar with arguments: " + str.toString().replaceAll(',', '')) - - args str.toArray() - } - Files.write(Paths.get(cachedJarsFilePath), [jarsList.toString()], utf8) - } - } - } -} - -def isJsFile = { fileName -> return fileName.substring(fileName.length() - 3, fileName.length()).equals(".js") } - -def isWorkerScript = { fileName -> - // Read __worker-chunks.json file containing a list of webpacked workers - // ignore worker scripts, so as to not attempt to generate bindings for them - return webpackWorkersExcludesList.any{element -> file(element).getAbsolutePath() == fileName} -} - -def traverseDirectory -traverseDirectory = { dir, traverseExplicitly -> - def currentDir = new File(dir) - def pJsonFile = false; - - if (!traverseExplicitly) { - if (rootTraversed || !dir.equals(jsCodeAbsolutePath)) { - currentDir.eachFile(FileType.FILES) { File f -> - if (f.getName().equals("package.json")) { - pJsonFile = true; - return true; //break - } - } - - if (pJsonFile) { - def jsonFile = new File(dir, "package.json"); - def pjson = new JsonSlurper().parseText(jsonFile.text) - - if (pjson.nativescript == null) { - return; - } else { - if (pjson.nativescript['recursive-static-bindings']) { - logger.info("Task: traverseDirectory: Folder will be traversed completely: " + dir) - traverseExplicitly = true; - } - } - } - } else { - rootTraversed = true; - } - - } - - currentDir.eachFile(FileType.FILES) { File f -> - def currFile = f.getAbsolutePath(); - if (isJsFile(currFile) && !isWorkerScript(currFile)) { - inputJsFiles.add(currFile) - } - } - - currentDir.eachFile FileType.DIRECTORIES, { d -> - traverseDirectory(d.getAbsolutePath(), traverseExplicitly) - } -} - -task traverseJsFilesArgs { //(jsCodeDir, bindingsFilePath, interfaceNamesFilePath, jsParserPath, jsFilesParameter) { - doLast { - jsCodeAbsolutePath = jsCodeDir; - inputJsFiles = new LinkedList(); - traverseDirectory(jsCodeDir, false); - - new File(jsFilesParameter).withWriter { out -> - inputJsFiles.each {out.println it} - } - - def list = new ArrayList(); - list.add("node") - list.add(jsParserPath) - list.add(jsCodeDir) - list.add(bindingsFilePath) - list.add(interfaceNamesFilePath) - list.add(jsFilesParameter) - - logger.info("Task: traverseJsFilesArgs: executed with arguments: " + list.toString().replaceAll(',', '')) - def proc = list.execute() - proc.in.eachLine { line -> println line } - proc.out.close() - proc.waitFor() - - if (proc.exitValue()) { - println "gave the following error: " - println "[ERROR] ${proc.getErrorStream()}" - } - } -} - -// runs the ast parser only with changed js files -task runAstParser(type: RunAstParserTask) { - outputFiles = files(bindingsFileP) - inputFiles = files(inputJsFiles) - - //ast parser configuration - jsParserPath = jsParserP - jsCodeDir = jsCodeAbsolutePath - bindingsFilePath = bindingsFileP - interfaceNamesFilePath = interfaceNamesFileP - jsFilesParametersPath = jsFilesParametersP - -} - -// traverses the javascript code input directory -// 1. traverses all root directory files -// 2. all subdirectories that do not have a package.json containing a "nativescript" key are skipped -task traverseJsFiles { - doFirst { - // invalidate previously generated bindings.txt file - // todo: remove when removing previously generated bindings is implemented - new File(bindingsFileP).delete() - traverseDirectory(jsCodeAbsolutePath, false) - } -} - -// custom incremental task that runs the ast parser -class RunAstParserTask extends DefaultTask { - @InputFiles - def FileCollection inputFiles - - @OutputFiles - def FileCollection outputFiles - - @Input - def jsParserPath - - @Input - def jsCodeDir - - @Input - def bindingsFilePath - - @Input - def interfaceNamesFilePath - - @Input - jsFilesParametersPath - - @TaskAction - void execute(IncrementalTaskInputs inputs) { - println inputs.incremental ? "Running incremental build" : "Running full build" - - def runCommand = { strList -> - assert ( strList instanceof String || ( strList instanceof List && strList.each{ it instanceof String } )) - def proc = strList.execute() - proc.in.eachLine { line -> println line } - proc.out.close() - proc.waitFor() - - if (proc.exitValue()) { - println "gave the following error: " - println "[ERROR] ${proc.getErrorStream()}" - } - // assert !proc.exitValue() - } - - def jsDependencies = new ArrayList(); - inputs.outOfDate { change -> - jsDependencies.add(change.getFile().getAbsolutePath()) - // println change.getFile(); - } - new File(jsFilesParametersPath).withWriter { out -> - jsDependencies.each {out.println it} - } - - def list = new ArrayList(); - list.add("node") - list.add(jsParserPath) - list.add(jsCodeDir) - list.add(bindingsFilePath) - list.add(interfaceNamesFilePath) - list.add(jsFilesParametersPath) - - if(project.gradle.startParameter.logLevel.equals(LogLevel.DEBUG)) { - list.add("enableVerboseLogging") - } - logger.info("Task: RunAstParserTask: running node with arguments: " + list.toString().replaceAll(',', '')) - runCommand(list) - - // inputs.removed { change -> - // implement later (pass information to dex generator) - // } - } -} - -// run the static binding generator -task generateBindings() { - - def bindingsFile = new File(bindingsFileP); - outputs.dir(absoluteOutDir) - inputs.dir (bindingsFile) - - doFirst { - if (!file(bindingsFileP).exists()) { - throw new GradleException("No ${bindingsFileP} was found after runAstParser task was ran! Check to see if there are any .js files inside ${jsCodeDir}") - } - - javaexec { - main "-jar" - - def str = new LinkedList (); - str.add("staticbindinggenerator.jar") - str.add(bindingsFileP) - str.add(absoluteOutDir) - - def jarsAsStr = jarsList.toString(); - def jarsArr = jarsAsStr.replaceAll(/[\[\]]/, "").split(", ") - str.addAll(jarsArr) - - logger.info("Task generateBindings: Call staticbindinggenerator.jar with arguments: " + str.toString().replaceAll(',', '')) - args str.toArray() - } - } -} - -traverseJsFiles.dependsOn(generateInterfaceNamesList) -runAstParser.dependsOn(traverseJsFiles) -generateBindings.dependsOn(runAstParser) - -///////// CUSTOM CLEAN //////////// -task clean(type: Delete) { - delete files(["$projectDir/bindings.txt", "$projectDir/cached.txt", "$projectDir/interfaces-names.txt", "$projectDir/jsFilesParameters.txt"]) -} diff --git a/android-static-binding-generator/project/interface-name-generator/.gitignore b/android-static-binding-generator/project/interface-name-generator/.gitignore deleted file mode 100644 index 50b4f7b0f..000000000 --- a/android-static-binding-generator/project/interface-name-generator/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -/build -*.iml -.gradle -/local.properties -/.idea -!/.idea/misc.xml -/a -!.gitignore diff --git a/android-static-binding-generator/project/interface-name-generator/build.gradle b/android-static-binding-generator/project/interface-name-generator/build.gradle deleted file mode 100644 index ad0ec6761..000000000 --- a/android-static-binding-generator/project/interface-name-generator/build.gradle +++ /dev/null @@ -1,21 +0,0 @@ -group 'interfacenamegenerator' -version '1.0-SNAPSHOT' - -apply plugin: 'java' -jar.archiveName = "interfacenamegenerator.jar" - -sourceCompatibility = 1.5 - -repositories { - mavenCentral() -} - -jar { - manifest { - attributes 'Main-Class': 'com.ig.GetInterfaceNames' - } -} - -dependencies { - testCompile group: 'junit', name: 'junit', version: '4.11' -} diff --git a/android-static-binding-generator/project/interface-name-generator/gradle/wrapper/gradle-wrapper.jar b/android-static-binding-generator/project/interface-name-generator/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 7a3265ee9..000000000 Binary files a/android-static-binding-generator/project/interface-name-generator/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/android-static-binding-generator/project/interface-name-generator/gradle/wrapper/gradle-wrapper.properties b/android-static-binding-generator/project/interface-name-generator/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index f16d26666..000000000 --- a/android-static-binding-generator/project/interface-name-generator/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-bin.zip diff --git a/android-static-binding-generator/project/interface-name-generator/gradlew b/android-static-binding-generator/project/interface-name-generator/gradlew deleted file mode 100755 index cccdd3d51..000000000 --- a/android-static-binding-generator/project/interface-name-generator/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/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-static-binding-generator/project/interface-name-generator/gradlew.bat b/android-static-binding-generator/project/interface-name-generator/gradlew.bat deleted file mode 100644 index f9553162f..000000000 --- a/android-static-binding-generator/project/interface-name-generator/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@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-static-binding-generator/project/interface-name-generator/settings.gradle b/android-static-binding-generator/project/interface-name-generator/settings.gradle deleted file mode 100644 index bfbb2158e..000000000 --- a/android-static-binding-generator/project/interface-name-generator/settings.gradle +++ /dev/null @@ -1,2 +0,0 @@ -rootProject.name = 'interfacenamegenerator' - diff --git a/android-static-binding-generator/project/staticbindinggenerator/gradle/wrapper/gradle-wrapper.jar b/android-static-binding-generator/project/staticbindinggenerator/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 7a3265ee9..000000000 Binary files a/android-static-binding-generator/project/staticbindinggenerator/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/android-static-binding-generator/project/staticbindinggenerator/gradle/wrapper/gradle-wrapper.properties b/android-static-binding-generator/project/staticbindinggenerator/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index f16d26666..000000000 --- a/android-static-binding-generator/project/staticbindinggenerator/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-bin.zip diff --git a/android-static-binding-generator/project/staticbindinggenerator/gradlew b/android-static-binding-generator/project/staticbindinggenerator/gradlew deleted file mode 100755 index cccdd3d51..000000000 --- a/android-static-binding-generator/project/staticbindinggenerator/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/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-static-binding-generator/project/staticbindinggenerator/gradlew.bat b/android-static-binding-generator/project/staticbindinggenerator/gradlew.bat deleted file mode 100644 index f9553162f..000000000 --- a/android-static-binding-generator/project/staticbindinggenerator/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@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-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Main.java b/android-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Main.java deleted file mode 100644 index 9b663f699..000000000 --- a/android-static-binding-generator/project/staticbindinggenerator/src/main/java/org/nativescript/staticbindinggenerator/Main.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.nativescript.staticbindinggenerator; - -import java.io.IOException; -import java.util.Arrays; - -public class Main { - public static void main(String[] args) throws IOException, ClassNotFoundException { - if (args.length < 3) { - throw new IllegalArgumentException("Expects at least three arguments"); - } - String inputBindingFilename = args[0]; - String outputDir = args[1]; - String[] libs = Arrays.copyOfRange(args, 2, args.length); - - new Generator(outputDir, libs).writeBindings(inputBindingFilename); - } -} diff --git a/build-artifacts/project-template-gradle/app/build.gradle b/build-artifacts/project-template-gradle/app/build.gradle deleted file mode 100644 index a16dfea58..000000000 --- a/build-artifacts/project-template-gradle/app/build.gradle +++ /dev/null @@ -1,710 +0,0 @@ -/* -* Script builds apk in release or debug mode -* To run: -* gradle assembleRelease -Prelease (release mode) -* gradle assembleDebug (debug mode -> default) -* Options: -* -Prelease //this flag will run build in release mode -* -PksPath=[path_to_keystore_file] -* -PksPassword=[password_for_keystore_file] -* -Palias=[alias_to_use_from_keystore_file] -* -Ppassword=[password_for_alias] -* -* -PtargetSdk=[target_sdk] -* -PbuildToolsVersion=[build_tools_version] -* -PsupportVersion=[support_version] -* -PcompileSdk=[compile_sdk_version] - -* -PdontRunSbg=[true/false] -*/ - -import groovy.json.JsonSlurper - -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; - -apply plugin: "com.android.application" - -def metadataParams = new LinkedList () -def allJarPaths = new LinkedList () -def configStage = "\tconfig phase: " -def nodeModulesDir = "../../node_modules/" -def dependenciesJson = file("$rootDir/dependencies.json") - -// the build script will not work with previous versions of the CLI (3.1 or earlier) -if (!dependenciesJson.exists()) { - throw new BuildCancelledException(""" -'dependencies.json' file not found. Check whether the NativeScript CLI has prepared the project beforehand, -and that your NativeScript version is 3.3, or a more recent one. To build an android project with the current -version of the {N} CLI install a previous version of the runtime package - 'tns platform add android@3.2'. -""") -} - -project.ext.extractedDependenciesDir = "${project.buildDir}/exploded-dependencies"; -def nativescriptDependencies = new JsonSlurper().parseText(dependenciesJson.text) - -def packageJsonContents = [:] - -def dontRunSbg = project.hasProperty("dontRunSbg"); -def asbgProject = project(":asbg") -asbgProject.ext.outDir = new File("$projectDir", "src/main/java") -asbgProject.ext.jsCodeDir = new File("$projectDir", "src/main/assets/app") - -def computeCompileSdkVersion = { -> project.hasProperty("compileSdk") ? compileSdk : 26 } -def computeTargetSdkVersion = { -> project.hasProperty("targetSdk") ? targetSdk : 26 } -def computeBuildToolsVersion = { -> project.hasProperty("buildToolsVersion") ? buildToolsVersion : "26.0.1" } - -project.ext.selectedBuildType = project.hasProperty("release") ? "release" : "debug" - -def renameResultApks = { variant -> - def name - variant.outputs.each { output -> - def apkDirectory = output.packageApplication.outputFile.parentFile - def abiName = ""; - if (output.getFilter(com.android.build.OutputFile.ABI)) { - abiName = "-" + output.getFilter(com.android.build.OutputFile.ABI); - } - def apkNamePrefix = rootProject.name + "-" + variant.buildType.name + abiName - name = apkNamePrefix + ".apk" - output.packageApplication.outputFile = new File(apkDirectory, name); - } -} - -//////////////////////////////////////////////////////////////////////////////////// -///////////////////////////// CONFIGURATIONS /////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////// - -def applyPluginsIncludeGradleConfigurations = { -> - def taskNames = project.getGradle().startParameter.taskNames - - // don't apply plugin configurations if clean is invoked - if (taskNames && taskNames.size() > 0 && taskNames.getAt(0).equals("clean")) { - return [] - } - - def configurationsDir = new File(projectDir, "build/configurations") - configurationsDir.deleteDir() - - def dimensions = [] - def includes = new ArrayList() - def flavorNumber = 0 - - nativescriptDependencies.each { dep -> - def androidDir = file("$rootDir/${dep.directory}/platforms/android") - if (!androidDir.exists()) { - return - } - - FileTree allFilesExceptForAars = fileTree(dir: androidDir, exclude: "**/*.aar"); - if(allFilesExceptForAars.size() <= 0) { - return; - } - - def includeGradleFile = new File(androidDir, "include.gradle") - - def packageJsonPath = file("$rootDir/${dep.directory}/package.json") - def packageJson = new JsonSlurper().parseText(packageJsonPath.text) - def pluginName = packageJson.name - def dimensionName = sanitizeDimensionName(pluginName) - - dimensions.add(dimensionName) - def flavor = "F${flavorNumber++}" - - def destinationDir = file("${configurationsDir}/${pluginName}/") - def destinationIncludeGradleFile = file("${configurationsDir}/${pluginName}/include.gradle") - - Files.createDirectories(Paths.get(destinationDir.getAbsolutePath())) - - if (includeGradleFile.exists()) { - println "\t + add include.gradle from ${includeGradleFile}" - destinationIncludeGradleFile.text = modifyProductFlavorInContent(includeGradleFile.text, dimensionName, flavor) - } else { - println "\t + creating include.gradle for plugin ${file(dep.directory)}" - destinationIncludeGradleFile.text = createProductFlavorsContent(flavor, dimensionName) - } - - includes.add(destinationIncludeGradleFile.getAbsolutePath()); - - copyAndRenamePluginDirToFlavorName(androidDir, flavor); - } - - includes.each { - println "\t + applying plugin configuration from ${it}" - apply from: it - } - - return dimensions -} - -def applyAppGradleConfiguration = { -> - def pathToAppGradle = "$rootDir/../../app/App_Resources/Android/app.gradle" - def appGradle = file(pathToAppGradle) - if (appGradle.exists()) { - println "\t + applying user-defined configuration from ${appGradle}" - apply from: pathToAppGradle - } else { - println "\t + couldn't load user-defined configuration from ${appGradle}. File doesn't exist." - } -} - -android { - compileSdkVersion computeCompileSdkVersion() - buildToolsVersion computeBuildToolsVersion() - - defaultConfig { - minSdkVersion 17 - targetSdkVersion computeTargetSdkVersion() - ndk { - abiFilters "armeabi-v7a", "x86" - } - } - - sourceSets.main { - jniLibs.srcDir "$projectDir/libs/jni" - } - - signingConfigs { - release { - if (project.hasProperty("release")) { - if (project.hasProperty("ksPath") && - project.hasProperty("ksPassword") && - project.hasProperty("alias") && - project.hasProperty("password")) { - - storeFile file(ksPath) - storePassword ksPassword - keyAlias alias - keyPassword password - } - } - } - } - buildTypes { - release { - signingConfig signingConfigs.release - } - } - - applicationVariants.all { variant -> - renameResultApks(variant) - } - - applyAppGradleConfiguration() - - def dimensions = applyPluginsIncludeGradleConfigurations() - - flavorDimensions(*dimensions) -} - -def externalRuntimeExists = !findProject(':runtime').is(null) - -repositories { - - // used for local *.AAR files - def pluginDependencies = nativescriptDependencies.collect { "$rootDir/${it.directory}/platforms/android" } - if(!externalRuntimeExists) { - pluginDependencies.add("libs/runtime-libs") - } - - flatDir { - dirs pluginDependencies - } -} - -dependencies { - def supportVer = "25.3.1" - if (project.hasProperty("supportVersion")) { - supportVer = supportVersion - } - - compile "com.android.support:support-v4:$supportVer" - compile "com.android.support:appcompat-v7:$supportVer" - debugCompile "com.android.support:design:$supportVer" -} - -//////////////////////////////////////////////////////////////////////////////////// -///////////////////////////// CONFIGURATION PHASE ////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////// - -task addNativeScriptRuntimePackageDependency { - def useV8Symbols = nativescriptDependencies.any { - def packageJsonPath = file("$rootDir/${it.directory}/package.json"); - def packageJson = new JsonSlurper().parseText(packageJsonPath.text); - return packageJson.nativescript.useV8Symbols; - } - - if(!externalRuntimeExists) { - def runtime = useV8Symbols ? "nativescript-regular" : "nativescript-optimized"; - println "\t + adding nativescript runtime package dependency: $runtime" - project.dependencies.add("compile", [name: runtime, ext: "aar"]) - } else { - project.dependencies.add("compile", project(':runtime')) - } -} - -task addDependenciesFromNativeScriptPlugins { - nativescriptDependencies.each { dep -> - def aarFiles = fileTree(dir: file("$rootDir/${dep.directory}/platforms/android"), include: ["**/*.aar"]) - aarFiles.each { aarFile -> - def length = aarFile.name.length() - 4 - def fileName = aarFile.name[0.. - println "\t + adding jar plugin dependency: " + jarFile.getAbsolutePath() - } - - project.dependencies.add("compile", jarFiles) - } -} - -static def updateProductFlavorsContent(flavor, dimensionName, oldContent) { - def endIndex = oldContent.length() - 1; - def index = 0; - def newContent = ""; - def level = -1; - def dimensionFound = false; - - while(index <= endIndex) { - if (level == 0 && (oldContent[index] == '"' || oldContent[index] == "'")) { - def closingQuotes = oldContent.indexOf('"', index + 1); - if (closingQuotes == -1) { - closingQuotes = oldContent.indexOf("'", index + 1); - } - - index = closingQuotes + 1; - newContent += "\"${flavor}\""; - continue; - } - - if (oldContent[index] == "{") { - level++; - } - - if (oldContent[index] == "}") { - level--; - } - - if (level > 0) { - if (!dimensionFound && oldContent.indexOf("dimension", index) == index) { - newContent += "dimension \"${dimensionName}\""; - dimensionFound = true; - index += "dimension ".length(); - def openingQuoutes = oldContent.indexOf('"', index); - if (openingQuoutes == -1) { - openingQuoutes = oldContent.indexOf("'", index); - } - - def closingQuotes = oldContent.indexOf('"', openingQuoutes + 1); - if (closingQuotes == -1) { - closingQuotes = oldContent.indexOf("'", openingQuoutes + 1); - } - - index = closingQuotes + 1; - } - } - - newContent += oldContent[index]; - - index++; - } - - return newContent; -} - -static def createProductFlavorsContent(flavor, dimensionName, includeAndroidContent = true) { - if (includeAndroidContent) - { - def content = """ -android { - productFlavors { - "${flavor}" { - dimension "${dimensionName}" - } - } -} -""" - return content; - } - else - { - def content = """ - productFlavors { - "${flavor}" { - dimension "${dimensionName}" - } - } -""" - return content; - } -} - -static def sanitizeDimensionName(str) { - return str.replaceAll(/\W/, "") -} - -static def modifyProductFlavorInContent(content, dimension, flavor) { - def indexStart = content.indexOf("productFlavors"); - def index = indexStart + "productFlavors".length(); - def indexEnd = -1; - def nestedOpenBracketsCount = 0; - - while (index < content.length()) - { - // print content[index]; - if (content[index] == "}") - { - nestedOpenBracketsCount--; - - if (nestedOpenBracketsCount == 0) - { - indexEnd = index; - break; - } - } - else if (content[index] == "{") - { - nestedOpenBracketsCount++; - } - - index++; - } - - if (indexEnd != -1) - { - // full content of productFlavors { ... } -> the substring is parenthesis to parenthesis -> { ... } - def oldProductFlavorsText = content.substring(indexStart, indexEnd + 1); - - def newProductFlavorsContent = updateProductFlavorsContent(flavor, dimension, oldProductFlavorsText); - - return content.replace(oldProductFlavorsText, newProductFlavorsContent); - } - else - { - def androidContentExists = content.indexOf("android {") != -1; - def newProductFlavorsContent = createProductFlavorsContent(flavor, dimension, !androidContentExists); - - if (androidContentExists) - { - return content.replace("android {", "android { ${newProductFlavorsContent}"); - } - else - { - return "${newProductFlavorsContent} \t ${content}" - } - } -} - -def copyFolder(source, destination) { - if (source.isDirectory()) { - Files.createDirectories(destination.toPath()); - - def sourceFiles = source.list(); - - sourceFiles.each { file -> - def srcFile = new File(source, file); - def destFile = new File(destination, file); - - //Recursive function call - copyFolder(srcFile, destFile); - } - } - else { - // Copy the file content from one place to another - def fileName = source.getName() - def extension = fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0 ? fileName.substring(fileName.lastIndexOf(".") + 1) : ""; - // exclude aars from package, as we've already included it in the compile dependencies, and don't want it taking up space - if (extension == "aar") { - return - } - - Files.copy(source.toPath(), destination.toPath(), java.nio.file.StandardCopyOption.REPLACE_EXISTING); - } -} - -def copyAndRenamePluginDirToFlavorName(directory, flavor) { - def targetDir = file("src/${flavor}") - - copyFolder(directory, targetDir) -} - -task ensureMetadataOutDir { - doLast { - def outputDir = file("$projectDir/metadata/output/assets/metadata") - outputDir.mkdirs() - } -} - -//////////////////////////////////////////////////////////////////////////////////// -///////////////////////////// EXECUTUION PHASE ///////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////// - -tasks.whenTaskAdded({ org.gradle.api.DefaultTask currentTask -> - if(currentTask =~ /generate.+BuildConfig/ ) { - currentTask.finalizedBy(extractAllJars) - extractAllJars.finalizedBy(collectAllJars) - collectAllJars.finalizedBy(setProperties) - } - if(currentTask =~ /compile.+JavaWithJavac/ ) { - currentTask.dependsOn(":asbg:generateBindings") - currentTask.finalizedBy(ensureMetadataOutDir) - ensureMetadataOutDir.finalizedBy(buildMetadata) - } - if(currentTask.equals("assembleDebug") || currentTask.equals("assembleRelease")) { - currentTask.finalizedBy("validateAppIdMatch"); - } -}) - -def explodeAar (File compileDependency, String outputDir) { - if(compileDependency.name.endsWith(".aar")) { - JarFile jar = new JarFile(compileDependency) - Enumeration enumEntries = jar.entries() - while (enumEntries.hasMoreElements()) { - JarEntry file = (JarEntry) enumEntries.nextElement(); - if(file.name.endsWith(".jar")) { - def f = new File(outputDir , file.name); - new File(f.parent).mkdirs(); - InputStream is = jar.getInputStream(file); - FileOutputStream fos = new FileOutputStream(f); - while (is.available() > 0) { - fos.write(is.read()) - } - fos.close() - is.close() - } - if (file.isDirectory()) { - continue - } - } - jar.close() - } - else if(compileDependency.name.endsWith(".jar")) { - copy { - from compileDependency.absolutePath - into outputDir - } - } -} - -task extractAllJars { - - outputs.dir extractedDependenciesDir - - doLast { - def iter = configurations.compile.resolvedConfiguration.resolvedArtifacts.iterator() - def dependencyCounter = 0; - while(iter.hasNext()) { - //declaring variable as specific class for getting code completion in Android Studio - org.gradle.api.internal.artifacts.DefaultResolvedArtifact nextDependency = iter.next(); - - def outputDir = java.nio.file.Paths.get(extractedDependenciesDir, ""+dependencyCounter).normalize().toString(); - explodeAar(nextDependency.file, outputDir) - dependencyCounter++; - } - } -} - -task collectAllJars { - description "gathers all paths to jar dependencies before building metadata with them" - - def sdkPath = android.sdkDirectory.getAbsolutePath(); - def androidJar = sdkPath + "/platforms/" + android.compileSdkVersion + "/android.jar" - - doFirst { - configurations.compile.each { File dependencyFile -> - logger.info("Task: collectAllJars: dependency file: " + dependencyFile.getAbsolutePath()) - allJarPaths.add(dependencyFile.getAbsolutePath()) - } - - allJarPaths.add(androidJar); - - def ft = fileTree(dir: extractedDependenciesDir, include: "**/*.jar") - ft.each { currentJarFile -> - allJarPaths.add(currentJarFile.getAbsolutePath()) - } - - metadataParams.add("metadata-generator.jar"); - metadataParams.add("$projectDir/metadata/output/assets/metadata"); - def jars = new LinkedList() - for (def i = 0; i < allJarPaths.size(); i++) { - metadataParams.add(allJarPaths.get(i)); - def f = new File(allJarPaths.get(i)) - if (f.getName().endsWith(".jar")) { - jars.add(f) - } - } - - asbgProject.ext.jarFiles = jars - } -} - -task buildMetadata (type: JavaExec) { - description "builds metadata with provided jar dependencies" - - inputs.files(allJarPaths) - inputs.dir("$buildDir/intermediates/classes") - - outputs.files("metadata/output/assets/metadata/treeNodeStream.dat", "metadata/output/assets/metadata/treeStringsStream.dat", "metadata/output/assets/metadata/treeValueStream.dat") - - doFirst { - // get compiled classes to pass to metadata generator - // these need to be called after the classes have compiled - def classesDir = "$buildDir/intermediates/classes" - - def classesSubDirs = new File(classesDir).listFiles() - def selectedBuildType = project.ext.selectedBuildType - - for (File subDir: classesSubDirs) { - if (!subDir.getName().equals(selectedBuildType)) { - def subDirBuildType = new File(subDir, selectedBuildType) - if (subDirBuildType.exists()) { - metadataParams.add(subDirBuildType.getAbsolutePath()); - } - } - } - - def classesDirBuildType = new File(classesDir, selectedBuildType) - if (classesDirBuildType.exists()) { - metadataParams.add(classesDirBuildType.getAbsolutePath()) - } - - workingDir "$rootDir/build-tools" - main "-jar" - - logger.info("Task buildMetadata: Call metadata-generator.jar with arguments: " + metadataParams.toString().replaceAll(',', '')) - args metadataParams.toArray() - } - - doLast { - copy { - from "$projectDir/metadata/output/assets/metadata" - into "$projectDir/src/main/assets/metadata" - } - } -} - -task generateTypescriptDefinitions (type: JavaExec) { - def paramz = new ArrayList(); - def includeDirs = ["com.android.support", "/platforms/" + android.compileSdkVersion] - - doFirst { - delete "$rootDir/build-tools/typings" - - workingDir "$rootDir/build-tools" - - main "-jar" - - paramz.add("dts-generator.jar"); - paramz.add("-input"); - - for (String jarPath: project.jarFiles) { - // don't generate typings for runtime jars and classes - if (shouldIncludeDirForTypings(jarPath, includeDirs)) { - paramz.add(jarPath); - } - } - - paramz.add("-output"); - paramz.add("typings"); - - logger.info("Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', '')) - args paramz.toArray(); - } -} - -generateTypescriptDefinitions.onlyIf { - project.hasProperty("generateTypings") && Boolean.parseBoolean(project.generateTypings) -} - -static def shouldIncludeDirForTypings(path, includeDirs) { - for (String p: includeDirs) { - if (path.indexOf(p) > -1) { - return true; - } - } - - return false; -} - -task copyTypings { - doLast { - println "Copied generated typings to application root level. Make sure to import android.d.ts in reference.d.ts" - - copy { - from "$rootDir/build-tools/typings" - into "$rootDir/../../" - } - } -} - -copyTypings.onlyIf { generateTypescriptDefinitions.didWork } - -task validateAppIdMatch { - doLast { - def packageJsonFile = new File("$rootDir/../../package.json"); - def lineSeparator = System.getProperty("line.separator"); - - if (packageJsonFile.exists() && !project.hasProperty("release")) { - String content = packageJsonFile.getText("UTF-8") - def jsonSlurper = new JsonSlurper() - def packageJsonMap = jsonSlurper.parseText(content) - - if (packageJsonMap.nativescript.id != android.defaultConfig.applicationId) { - def errorMessage = "${lineSeparator}WARNING: The Application identifier is different from the one inside 'package.json' file.$lineSeparator" + - "NativeScript CLI might not work properly.$lineSeparator" + - "Update the application identifier in package.json and app.gradle so that they match."; - logger.error(errorMessage); - } - } - } -} - -//////////////////////////////////////////////////////////////////////////////////// -////////////////////////////// OPTIONAL TASKS ////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////// - -task setProperties { - project.ext.jarFiles = [] - doLast { - def list = []; - allJarPaths.each({f -> - if(f.endsWith(".jar")) { - list.add(f); - } - }) - project.jarFiles = list; - } -} - -//////// custom clean /////////// -task deleteMetadata (type: Delete){ - delete "$projectDir/metadata/output", "$projectDir/src/main/assets/metadata" -} - -task deleteFlavors (type: Delete){ - doLast { - def srcDir = new File("$projectDir/src") - srcDir.listFiles().each({ f -> - def dirName = f.getName() - if (dirName != "main" && - dirName != "debug" && - dirName != "release") { - delete f - } - }) - } -} - -task deleteGeneratedBindings(type: Delete) { - delete "$projectDir/src/main/java/com/tns/gen" -} - -deleteMetadata.dependsOn(":asbg:clean") -deleteFlavors.dependsOn(deleteMetadata) -deleteGeneratedBindings.dependsOn(deleteFlavors) -clean.dependsOn(deleteGeneratedBindings) diff --git a/test-app/app/src/main/java/com/tns/NativeScriptApplication.java b/build-artifacts/project-template-gradle/app/src/main/java/com/tns/NativeScriptApplication.java similarity index 100% rename from test-app/app/src/main/java/com/tns/NativeScriptApplication.java rename to build-artifacts/project-template-gradle/app/src/main/java/com/tns/NativeScriptApplication.java diff --git a/build-artifacts/project-template-gradle/build-tools/dts-generator.jar b/build-artifacts/project-template-gradle/build-tools/dts-generator.jar deleted file mode 100644 index aa46fd88c..000000000 Binary files a/build-artifacts/project-template-gradle/build-tools/dts-generator.jar and /dev/null differ diff --git a/build-artifacts/project-template-gradle/build.gradle b/build-artifacts/project-template-gradle/build.gradle deleted file mode 100644 index f6050738b..000000000 --- a/build-artifacts/project-template-gradle/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - - repositories { - google() - jcenter() - } - dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' - } -} - -allprojects { - repositories { - google() - jcenter() - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/build-artifacts/project-template-gradle/gradle/wrapper/gradle-wrapper.jar b/build-artifacts/project-template-gradle/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 3e68357b7..000000000 Binary files a/build-artifacts/project-template-gradle/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/build-artifacts/project-template-gradle/gradle/wrapper/gradle-wrapper.properties b/build-artifacts/project-template-gradle/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 666911124..000000000 --- a/build-artifacts/project-template-gradle/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Thu Oct 26 15:50:33 EEST 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/build-artifacts/project-template-gradle/gradlew b/build-artifacts/project-template-gradle/gradlew deleted file mode 100755 index 4453ccea3..000000000 --- a/build-artifacts/project-template-gradle/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/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/build-artifacts/project-template-gradle/gradlew.bat b/build-artifacts/project-template-gradle/gradlew.bat deleted file mode 100644 index f9553162f..000000000 --- a/build-artifacts/project-template-gradle/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@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/build.gradle b/build.gradle index ffb8813d9..8b1ae4b33 100644 --- a/build.gradle +++ b/build.gradle @@ -14,12 +14,15 @@ import groovy.json.JsonBuilder import groovy.json.JsonOutput def isWinOs = System.properties['os.name'].toLowerCase().contains('windows') -def localMetadataGen = "../android-metadata-generator/dist/tns-android-metadata-generator-0.0.1.tgz" -def distDir = "$projectDir/dist" def pVersion = "no package version was provided by build.gradle build" def arVersion = "no commit sha was provided by build.gradle build" def generateRegularRuntimePackage = !project.hasProperty("skipUnoptimized"); +def DIST_PATH = "$rootDir/dist" +def TEST_APP_PATH = "$rootDir/test-app" +def BUILD_TOOLS_PATH = "$TEST_APP_PATH/build-tools" +def DIST_FRAMEWORK_PATH = "$DIST_PATH/framework" + task checkEnvironmentVariables { if ("$System.env.JAVA_HOME" == "" || "$System.env.JAVA_HOME" == "null") { throw new GradleException("Set JAVA_HOME to point to the correct Jdk location\n"); @@ -39,55 +42,16 @@ task checkEnvironmentVariables { } task cleanDistDir(type: Delete) { - delete distDir + delete DIST_PATH } task createDistDir { doLast { - def distF = new File(distDir) + def distF = new File(DIST_PATH) distF.mkdirs() } } -task copyFilesToProjectTemeplate { - doLast { - copy { - from "$rootDir/test-app/app/src/main/java/com/tns/ErrorReport.java" - from "$rootDir/test-app/app/src/main/java/com/tns/ErrorReportActivity.java" - from "$rootDir/test-app/app/src/main/java/com/tns/NativeScriptSyncService.java" - into "$rootDir/build-artifacts/project-template-gradle/app/src/debug/java/com/tns/" - } - copy { - from "$rootDir/test-app/app/src/main/assets/internal" - into "$rootDir/build-artifacts/project-template-gradle/app/src/main/assets/internal" - } - copy { - from "$rootDir/test-app/app/src/main/java/com/tns/AndroidJsV8Inspector.java" - from "$rootDir/test-app/app/src/main/java/com/tns/DefaultExtractPolicy.java" - from "$rootDir/test-app/app/src/main/java/com/tns/LogcatLogger.java" - from "$rootDir/test-app/app/src/main/java/com/tns/NativeScriptApplication.java" - from "$rootDir/test-app/app/src/main/java/com/tns/NativeScriptUncaughtExceptionHandler.java" - from "$rootDir/test-app/app/src/main/java/com/tns/RuntimeHelper.java" - from "$rootDir/test-app/app/src/main/java/com/tns/Util.java" - into "$rootDir/build-artifacts/project-template-gradle/app/src/main/java/com/tns/" - } - copy { - from "$rootDir/test-app/app/src/main/java/com/tns/internal" - into "$rootDir/build-artifacts/project-template-gradle/app/src/main/java/com/tns/internal" - } - } -} - -task copyProjectTemplate(type: Copy) { - from "$rootDir/build-artifacts/project-template-gradle" - into "$rootDir/dist/framework" -} - -task copyPackageJson(type: Copy) { - from "$rootDir/package.json" - into "$rootDir/dist" -} - task getPackageVersion { doLast { String content = new File("$rootDir/package.json").getText("UTF-8") @@ -128,144 +92,150 @@ task getCommitVersion { } } -task generateRuntime { +task generateDtsgJar(type: Exec) { doFirst { - tasks.generateOptimizedRuntimeAar.execute(); - - if (generateRegularRuntimePackage) { - tasks.generateRuntimeAar.execute(); + workingDir "$TEST_APP_PATH" + if (isWinOs) { + commandLine "cmd", "/c", "gradlew", ":dts-generator:jar" + } else { + commandLine "./gradlew", ":dts-generator:jar" } } } -task generateOptimizedRuntimeAar(type: Exec) { +task generateSbgJar(type: Exec) { doFirst { - workingDir "$rootDir/test-app" + workingDir "$TEST_APP_PATH" if (isWinOs) { - commandLine "cmd", "/c", "gradlew", "assembleRelease", "-PpackageVersion=${pVersion}", "-PgitCommitVersion=${arVersion}", "-Poptimized" + commandLine "cmd", "/c", "gradlew", ":static-binding-generator:jar" } else { - commandLine "./gradlew", "assembleRelease", "-PpackageVersion=${pVersion}", "-PgitCommitVersion=${arVersion}", "-Poptimized" + commandLine "./gradlew", ":static-binding-generator:jar" } } } -task generateRuntimeAar(type: Exec) { +task generateMdgJar(type: Exec) { doFirst { - workingDir "$rootDir/test-app" + workingDir "$TEST_APP_PATH" if (isWinOs) { - commandLine "cmd", "/c", "gradlew", "assembleRelease", "-PpackageVersion=${pVersion}", "-PgitCommitVersion=${arVersion}" + commandLine "cmd", "/c", "gradlew", ":android-metadata-generator:jar" } else { - commandLine "./gradlew", "assembleRelease", "-PpackageVersion=${pVersion}", "-PgitCommitVersion=${arVersion}" + commandLine "./gradlew", ":android-metadata-generator:jar" } } } -task copyGeneratedRuntime { - doLast { - copy { - from "$rootDir/test-app/runtime/build/outputs/aar/runtime-regular-release.aar" - into "$rootDir/dist/framework/app/libs/runtime-libs/" - rename "runtime-regular-release.aar", "nativescript-regular.aar" - } +task generateRuntime { + doFirst { + tasks.generateOptimizedRuntimeAar.execute(); - copy { - from "$rootDir/test-app/runtime/build/outputs/aar/runtime-optimized-release.aar" - into "$rootDir/dist/framework/app/libs/runtime-libs/" - rename "runtime-optimized-release.aar", "nativescript-optimized.aar" + if (generateRegularRuntimePackage) { + tasks.generateRuntimeAar.execute(); } } } -task generateMetadataGeneratorJar(type: Exec) { +task generateOptimizedRuntimeAar (type: Exec) { doFirst { - workingDir "$rootDir/android-metadata-generator" - + workingDir "$TEST_APP_PATH" if (isWinOs) { - commandLine "cmd", "/c", "gradlew", "jarmg" + commandLine "cmd", "/c", "gradlew", ":runtime:assembleRelease", "-PpackageVersion=${pVersion}", "-PgitCommitVersion=${arVersion}", "-Poptimized" } else { - commandLine "./gradlew", "jarmg" - } - } -} - -task copyGeneratedMetadataGeneratorJar { - doLast { - copy { - from "$rootDir/android-metadata-generator/dist" - into "$rootDir/dist/framework/build-tools" - rename "android-metadata-generator.jar", "metadata-generator.jar" + commandLine "./gradlew", ":runtime:assembleRelease", "-PpackageVersion=${pVersion}", "-PgitCommitVersion=${arVersion}", "-Poptimized" } } } -task generateInterfaceNameGenerator(type: Exec) { +task generateRuntimeAar (type: Exec) { doFirst { - workingDir "$rootDir/android-static-binding-generator/project/interface-name-generator" - + workingDir "$TEST_APP_PATH" if (isWinOs) { - commandLine "cmd", "/c", "gradlew", "assemble" + commandLine "cmd", "/c", "gradlew", ":runtime:assembleRelease", "-PpackageVersion=${pVersion}", "-PgitCommitVersion=${arVersion}" } else { - commandLine "./gradlew", "assemble" + commandLine "./gradlew", ":runtime:assembleRelease", "-PpackageVersion=${pVersion}", "-PgitCommitVersion=${arVersion}" } } } -task copyInterfaceNameGeneratorJar { +task copyFilesToProjectTemeplate { doLast { copy { - from "$rootDir/android-static-binding-generator/project/interface-name-generator/build/libs" - into "$rootDir/dist/framework/build-tools/android-static-binding-generator" + from "$TEST_APP_PATH/app/src/debug" + into "$DIST_FRAMEWORK_PATH/app/src/debug" } - } -} - -task generateStaticBindingGeneratorJar(type: Exec) { - doFirst { - workingDir "$rootDir/android-static-binding-generator/project/staticbindinggenerator" - - - def commandArgs = ["assemble"] - - if (isWinOs) { - commandLine "cmd", "/c", "gradlew" - } else { - commandLine "./gradlew" + copy { + from "$TEST_APP_PATH/app/src/main/assets/internal" + into "$DIST_FRAMEWORK_PATH/app/src/main/assets/internal" } - - args commandArgs - } - -} -task copyGeneratedStaticBindingGeneratorJar { - doLast { copy { - from "$rootDir/android-static-binding-generator/project/staticbindinggenerator/build/libs" - into "$rootDir/dist/framework/build-tools/android-static-binding-generator" + from "$TEST_APP_PATH/app/src/main/java/com/tns/" + include "*.java" + exclude "NativeScriptApplication.java" + exclude "NativeScriptActivity.java" + into "$DIST_FRAMEWORK_PATH/app/src/main/java/com/tns" } - } -} - -task copyStaticBindingGeneratorProject { - doLast { copy { - from "$rootDir/android-static-binding-generator/project" - exclude "staticbindinggenerator", "interface-name-generator", "**/package.json", "*.txt", "**/logs", "**/out", "**/input_parced_typescript" - - into "$rootDir/dist/framework/build-tools/android-static-binding-generator" + from "$TEST_APP_PATH/app/src/main/java/com/tns/internal" + into "$DIST_FRAMEWORK_PATH/app/src/main/java/com/tns/internal" + } + copy { + from "$BUILD_TOOLS_PATH/static-binding-generator.jar" + into "$DIST_FRAMEWORK_PATH/build-tools" + } + copy { + from "$BUILD_TOOLS_PATH/dts-generator.jar" + into "$DIST_FRAMEWORK_PATH/build-tools" + } + copy { + from "$BUILD_TOOLS_PATH/jsparser" + exclude "logs", "node_modules", "out", "package.json", "tests" + into "$DIST_FRAMEWORK_PATH/build-tools/jsparser" + } + copy { + from "$BUILD_TOOLS_PATH/android-metadata-generator.jar" + into "$DIST_FRAMEWORK_PATH/build-tools" + } + copy { + from "$TEST_APP_PATH/runtime/build/outputs/aar/runtime-regular-release.aar" + into "$DIST_FRAMEWORK_PATH/app/libs/runtime-libs" + rename "runtime-regular-release.aar", "nativescript-regular.aar" + } + copy { + from "$TEST_APP_PATH/runtime/build/outputs/aar/runtime-optimized-release.aar" + into "$DIST_FRAMEWORK_PATH/app/libs/runtime-libs" + rename "runtime-optimized-release.aar", "nativescript-optimized.aar" + } + copy { + from "$TEST_APP_PATH/app/build.gradle" + into "$DIST_FRAMEWORK_PATH/app" + } + copy { + from "$TEST_APP_PATH/build.gradle" + into "$DIST_FRAMEWORK_PATH" + } + copy { + from "$TEST_APP_PATH/gradle" + into "$DIST_FRAMEWORK_PATH/gradle" + } + copy { + from "$TEST_APP_PATH/gradlew" + into "$DIST_FRAMEWORK_PATH" + } + copy { + from "$TEST_APP_PATH/gradlew.bat" + into "$DIST_FRAMEWORK_PATH" } } } -task createNpmPackage(type: Exec) { - doFirst { - workingDir "$rootDir/dist" +task copyProjectTemplate(type: Copy) { + from "$rootDir/build-artifacts/project-template-gradle" + into "$DIST_FRAMEWORK_PATH" +} - if (isWinOs) { - commandLine "cmd", "/c", "npm", "pack" - } else { - commandLine "npm", "pack" - } - } +task copyPackageJson(type: Copy) { + from "$rootDir/package.json" + into "$rootDir/dist" } task setPackageVersionInPackageJsonFile { @@ -283,83 +253,60 @@ task copyReadme(type: Copy) { into "$rootDir/dist" } -task cleanBuildArtefacts(type: Delete) { - delete "$rootDir/build-artifacts/project-template-gradle/app/src/debug/java" - delete "$rootDir/build-artifacts/project-template-gradle/app/src/main/java" - delete "$rootDir/build-artifacts/project-template-gradle/app/src/main/assets" -} - -//clean and set up dirs -copyFilesToProjectTemeplate.dependsOn(cleanDistDir) - -//copy framework structure -createDistDir.dependsOn(copyFilesToProjectTemeplate) -copyProjectTemplate.dependsOn(createDistDir) -copyPackageJson.dependsOn(copyProjectTemplate) +task createNpmPackage(type: Exec) { + doFirst { + workingDir "$rootDir/dist" -copyStaticBindingGeneratorProject.dependsOn(copyPackageJson) -//generate static binding generator and copy into project template -generateInterfaceNameGenerator.dependsOn(copyStaticBindingGeneratorProject) -copyInterfaceNameGeneratorJar.dependsOn(generateInterfaceNameGenerator) -generateStaticBindingGeneratorJar.dependsOn(copyInterfaceNameGeneratorJar) -copyGeneratedStaticBindingGeneratorJar.dependsOn(generateStaticBindingGeneratorJar) + if (isWinOs) { + commandLine "cmd", "/c", "npm", "pack" + } else { + commandLine "npm", "pack" + } + } +} -//get version from package json -getPackageVersion.dependsOn(copyGeneratedStaticBindingGeneratorJar) +generateSbgJar.dependsOn(generateDtsgJar) +generateMdgJar.dependsOn(generateSbgJar) +createDistDir.dependsOn(generateMdgJar) +getPackageVersion.dependsOn(createDistDir) getCommitVersion.dependsOn(getPackageVersion) - -//generate runtime and copy into framework structure generateRuntime.dependsOn(getCommitVersion) +generateOptimizedRuntimeAar.dependsOn(generateRuntime) +generateRuntimeAar.dependsOn(generateOptimizedRuntimeAar) +copyFilesToProjectTemeplate.dependsOn(generateRuntimeAar) +copyProjectTemplate.dependsOn(copyFilesToProjectTemeplate) +copyPackageJson.dependsOn(copyProjectTemplate) +setPackageVersionInPackageJsonFile.dependsOn(copyPackageJson) +copyReadme.dependsOn(setPackageVersionInPackageJsonFile) +createNpmPackage.dependsOn(copyReadme) -setPackageVersionInPackageJsonFile.dependsOn(generateRuntime) - -//generateRuntime.dependsOn(build) +task createPackage { + description "Builds the NativeScript Android cleanBuildArtefactsApp Package using an application project template." + dependsOn createNpmPackage + println "Creating NativeScript Android Package" +} -tasks.whenTaskAdded { task -> - if (task.getName() == "build") { - generateRuntime +task runSbgTests (type: Exec) { + doFirst { + workingDir "$TEST_APP_PATH" + if (isWinOs) { + commandLine "cmd", "/c", "gradlew", ":static-binding-generator:test" + } else { + commandLine "./gradlew", ":static-binding-generator:test" + } } } -copyGeneratedRuntime.dependsOn(generateRuntime) - -//generate metadata generator and copy into framework structure -generateMetadataGeneratorJar.dependsOn(copyGeneratedRuntime) -copyGeneratedMetadataGeneratorJar.dependsOn(generateMetadataGeneratorJar) - -copyReadme.dependsOn(copyGeneratedMetadataGeneratorJar) - -//pack runtime -setPackageVersionInPackageJsonFile.dependsOn(copyReadme) -createNpmPackage.dependsOn(setPackageVersionInPackageJsonFile) -cleanBuildArtefacts.dependsOn(createNpmPackage) - -task createPackage { - description "Builds the NativeScript Android App Package using an application project template." - dependsOn cleanDistDir, - createDistDir, - - copyProjectTemplate, - - copyPackageJson, - - copyStaticBindingGeneratorProject, - generateStaticBindingGeneratorJar, - copyGeneratedStaticBindingGeneratorJar, - - getPackageVersion, - getCommitVersion, - - generateRuntime, - - setPackageVersionInPackageJsonFile, - - copyGeneratedRuntime, - generateMetadataGeneratorJar, - copyGeneratedMetadataGeneratorJar, - copyReadme, - createNpmPackage, - cleanBuildArtefacts - - println "Creating NativeScript Android Package" +task runTests (type: Exec) { + doFirst { + workingDir "$TEST_APP_PATH" + if (isWinOs) { + commandLine "cmd", "/c", "gradlew", "-b", "runtests.gradle", "runtests" + } else { + commandLine "./gradlew", "-b", "runtests.gradle", "runtests" + } + } } + +runSbgTests.dependsOn(generateMdgJar) +runTests.dependsOn(runSbgTests) \ No newline at end of file diff --git a/test-app/.gitignore b/test-app/.gitignore index 1a019ccb2..e94ad2aa9 100644 --- a/test-app/.gitignore +++ b/test-app/.gitignore @@ -8,3 +8,19 @@ /captures .externalNativeBuild app/app.iml + +# IntelliJ +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/dictionaries +.idea/libraries + + +treeNodeStream.dat +treeStringsStream.dat +treeValueStream.dat +NativeScriptActivity.java +NativeScriptApplication.java +**/com/tns/gen \ No newline at end of file diff --git a/test-app/app/build.gradle b/test-app/app/build.gradle index 7d3674896..3edb21dde 100644 --- a/test-app/app/build.gradle +++ b/test-app/app/build.gradle @@ -1,127 +1,478 @@ -apply plugin: 'com.android.application' +/* +* Script builds apk in release or debug mode +* To run: +* gradle assembleRelease -Prelease (release mode) +* gradle assembleDebug (debug mode -> default) +* Options: +* -Prelease //this flag will run build in release mode +* -PksPath=[path_to_keystore_file] +* -PksPassword=[password_for_keystore_file] +* -Palias=[alias_to_use_from_keystore_file] +* -Ppassword=[password_for_alias] +* +* -PtargetSdk=[target_sdk] +* -PbuildToolsVersion=[build_tools_version] +* -PsupportVersion=[support_version] +* -PcompileSdk=[compile_sdk_version] +*/ + +import groovy.json.JsonSlurper + +apply plugin: "com.android.application" + +//common +def BUILD_TOOLS_PATH = "$rootDir/build-tools" +def TYPINGS_PATH = "$BUILD_TOOLS_PATH/typings" +def USER_PROJECT_ROOT = "$rootDir/../.." +def PLATFORMS_ANDROID = "platforms/android" +def PACKAGE_JSON = "package.json" + +//static binding generator +def SBG_JAVA_DEPENDENCIES = "sbg-java-dependencies.txt" +def SBG_INPUT_OUTPUT_DIRS = "sbg-input-output-dirs.txt" +def SBG_JS_PARCED_FILES = "sbg-js-parced-files.txt" +def SBG_BINDINGS_NAME = "sbg-bindings.txt" +def SBG_INTERFACE_NAMES = "sbg-interface-names.txt" +def INPUT_JS_DIR = "$projectDir/src/main/assets/app" +def OUTPUT_JAVA_DIR = "$projectDir/src/main/java" + +//metadata generator +def MDG_OUTPUT_DIR = "mdg-output-dir.txt" +def MDG_JAVA_DEPENDENCIES = "mdg-java-dependencies.txt" +def METADATA_OUT_PATH = "$projectDir/src/main/assets/metadata" + +// the build script will not work with previous versions of the CLI (3.1 or earlier) +def dependenciesJson = file("$rootDir/dependencies.json") +if (!dependenciesJson.exists()) { + throw new BuildCancelledException(""" +'dependencies.json' file not found. Check whether the NativeScript CLI has prepared the project beforehand, +and that your NativeScript version is 3.3, or a more recent one. To build an android project with the current +version of the {N} CLI install a previous version of the runtime package - 'tns platform add android@3.2'. +""") +} + +project.ext.extractedDependenciesDir = "${project.buildDir}/exploded-dependencies" +def nativescriptDependencies = new JsonSlurper().parseText(dependenciesJson.text) + +def computeCompileSdkVersion = { -> project.hasProperty("compileSdk") ? compileSdk : 26 } +def computeTargetSdkVersion = { -> project.hasProperty("targetSdk") ? targetSdk : 26 } +def computeBuildToolsVersion = { -> + project.hasProperty("buildToolsVersion") ? buildToolsVersion : "26.0.1" +} + +project.ext.selectedBuildType = project.hasProperty("release") ? "release" : "debug" + +//////////////////////////////////////////////////////////////////////////////////// +///////////////////////////// CONFIGURATIONS /////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// + +def applyAppGradleConfiguration = { -> + def pathToAppGradle = "$USER_PROJECT_ROOT/app/App_Resources/Android/app.gradle" + def appGradle = file(pathToAppGradle) + if (appGradle.exists()) { + println "\t + applying user-defined configuration from ${appGradle}" + apply from: pathToAppGradle + } else { + println "\t + couldn't load user-defined configuration from ${appGradle}. File doesn't exist." + } +} + +def applyPluginGradleConfigurations = { -> + nativescriptDependencies.each {dep -> + def includeGradlePath = "$rootDir/${dep.directory}/$PLATFORMS_ANDROID/include.gradle" + if(file(includeGradlePath).exists()) { + apply from: includeGradlePath + } + } +} + +def renameResultApks = { variant -> + def name + variant.outputs.each { output -> + def apkDirectory = output.packageApplication.outputFile.parentFile + def abiName = ""; + if (output.getFilter(com.android.build.OutputFile.ABI)) { + abiName = "-" + output.getFilter(com.android.build.OutputFile.ABI); + } + def apkNamePrefix = rootProject.name + "-" + variant.buildType.name + abiName + name = apkNamePrefix + ".apk" + output.packageApplication.outputFile = new File(apkDirectory, name); + } +} android { - compileSdkVersion 26 - buildToolsVersion "26.0.1" + compileSdkVersion computeCompileSdkVersion() + buildToolsVersion computeBuildToolsVersion() + defaultConfig { - applicationId "com.tns.testapplication" minSdkVersion 17 - targetSdkVersion 26 - versionCode 1 - versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + targetSdkVersion computeTargetSdkVersion() + ndk { + abiFilters "armeabi-v7a", "x86" + } + } + + sourceSets.main { + jniLibs.srcDir "$projectDir/libs/jni" + } + + signingConfigs { + release { + if (project.hasProperty("release")) { + if (project.hasProperty("ksPath") && + project.hasProperty("ksPassword") && + project.hasProperty("alias") && + project.hasProperty("password")) { + + storeFile file(ksPath) + storePassword ksPassword + keyAlias alias + keyPassword password + } + } + } } buildTypes { release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } + + applicationVariants.all { variant -> + renameResultApks(variant) + } + + applyAppGradleConfiguration() + applyPluginGradleConfigurations() } -dependencies { - releaseCompile project(path: ':runtime', configuration: 'release') - debugCompile project(path: ':runtime', configuration: 'debug') +def externalRuntimeExists = !findProject(':runtime').is(null) + +repositories { + + // used for local *.AAR files + def pluginDependencies = nativescriptDependencies.collect { + "$rootDir/${it.directory}/$PLATFORMS_ANDROID" + } + if (!externalRuntimeExists) { + pluginDependencies.add("libs/runtime-libs") + } - compile fileTree(include: ['*.jar'], dir: 'libs') - compile 'com.android.support:appcompat-v7:26.0.2' - compile 'com.android.support:design:26.0.2' - compile 'com.android.support.constraint:constraint-layout:1.0.2' + if (pluginDependencies.size() > 0) { + flatDir { + dirs pluginDependencies + } + } +} + +dependencies { + def supportVer = "26.0.1" + if (project.hasProperty("supportVersion")) { + supportVer = supportVersion + } + compile "com.android.support:support-v4:$supportVer" + compile "com.android.support:appcompat-v7:$supportVer" + debugCompile "com.android.support:design:$supportVer" + def sbgProjectExists = !findProject(':static-binding-generator').is(null) + if (sbgProjectExists) { + provided project(':static-binding-generator') + } + def mdgProjectExists = !findProject(':android-metadata-generator').is(null) + if (mdgProjectExists) { + provided project(':android-metadata-generator') + } + def dtsgProjectExists = !findProject(':dts-generator').is(null) + if (dtsgProjectExists) { + provided project(':dts-generator') + } } -def isWinOs = System.properties['os.name'].toLowerCase().contains('windows') -def runOnDevice = project.hasProperty("runOnDevice"); -def runOnDeviceOrEmulator = runOnDevice ? "-d" : "-e"; +//////////////////////////////////////////////////////////////////////////////////// +///////////////////////////// CONFIGURATION PHASE ////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// -task deleteDist(type: Delete) { - doFirst { - delete "$rootDir/dist" +task addNativeScriptRuntimePackageDependency { + def useV8Symbols = nativescriptDependencies.any { + def packageJsonPath = file("$rootDir/${it.directory}/$PACKAGE_JSON") + def packageJson = new JsonSlurper().parseText(packageJsonPath.text) + return packageJson.nativescript.useV8Symbols + } + + if (!externalRuntimeExists) { + def runtime = useV8Symbols ? "nativescript-regular" : "nativescript-optimized" + println "\t + adding nativescript runtime package dependency: $runtime" + project.dependencies.add("compile", [name: runtime, ext: "aar"]) + } else { + project.dependencies.add("compile", project(':runtime')) } } -task installApk(type: Exec) { - doFirst { - println "Attempting to install buit apk" +task addDependenciesFromNativeScriptPlugins { + nativescriptDependencies.each { dep -> + def aarFiles = fileTree(dir: file("$rootDir/${dep.directory}/$PLATFORMS_ANDROID"), include: ["**/*.aar"]) + aarFiles.each { aarFile -> + def length = aarFile.name.length() - 4 + def fileName = aarFile.name[0.. + println "\t + adding jar plugin dependency: " + jarFile.getAbsolutePath() } + + project.dependencies.add("compile", jarFiles) + } +} + +tasks.whenTaskAdded({ org.gradle.api.DefaultTask currentTask -> + if (currentTask =~ /generate.+BuildConfig/) { + currentTask.finalizedBy(extractAllJars) + extractAllJars.finalizedBy(collectAllJars) + } + if (currentTask =~ /compile.+JavaWithJavac/) { + currentTask.dependsOn(runSbg) + currentTask.finalizedBy(ensureMetadataOutDir) + ensureMetadataOutDir.finalizedBy(buildMetadata) } + if (currentTask =~ /assemble.+Debug/ || currentTask =~ /assemble.+Release/) { + currentTask.finalizedBy("validateAppIdMatch") + } +}) + +//////////////////////////////////////////////////////////////////////////////////// +///////////////////////////// EXECUTUION PHASE ///////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// +task runSbg(type: JavaExec) { + inputs.dir(INPUT_JS_DIR) + outputs.dir(OUTPUT_JAVA_DIR) + + workingDir "$BUILD_TOOLS_PATH" + main "-jar" + args "static-binding-generator.jar" +} + +task ensureMetadataOutDir { doLast { - println "Install result:" + execResult + def outputDir = file("$METADATA_OUT_PATH") + outputDir.mkdirs() } } -task deletePreviousResultXml(type: Exec) { - doFirst { - println "Removing previous android_unit_test_results.xml" +def explodeAar(File compileDependency, String outputDir) { + if (compileDependency.name.endsWith(".aar")) { + java.util.jar.JarFile jar = new java.util.jar.JarFile(compileDependency) + Enumeration enumEntries = jar.entries() + while (enumEntries.hasMoreElements()) { + java.util.jar.JarEntry file = (java.util.jar.JarEntry) enumEntries.nextElement() + if (file.name.endsWith(".jar")) { + def f = new File(outputDir, file.name) + new File(f.parent).mkdirs() + InputStream is = jar.getInputStream(file) + FileOutputStream fos = new FileOutputStream(f) + while (is.available() > 0) { + fos.write(is.read()) + } + fos.close() + is.close() + } + if (file.isDirectory()) { + continue + } + } + jar.close() + } else if (compileDependency.name.endsWith(".jar")) { + copy { + from compileDependency.absolutePath + into outputDir + } + } +} + +task extractAllJars { + + outputs.dir extractedDependenciesDir + + doLast { + def iter = configurations.compile.resolvedConfiguration.resolvedArtifacts.iterator() + def dependencyCounter = 0 + while (iter.hasNext()) { + //declaring variable as specific class for getting code completion in Android Studio + org.gradle.api.internal.artifacts.DefaultResolvedArtifact nextDependency = iter.next() - if (isWinOs) { - commandLine "cmd", "/c", "adb", "root", "&&", "adb", runOnDeviceOrEmulator, "shell", "rm", "-rf", "/data/data/com.tns.testapplication/android_unit_test_results.xml" - } else { - commandLine "adb", "root", "&&", "adb", runOnDeviceOrEmulator, "shell", "rm", "-rf", "/data/data/com.tns.testapplication/android_unit_test_results.xml" + def outputDir = java.nio.file.Paths.get(extractedDependenciesDir, "" + dependencyCounter).normalize().toString() + explodeAar(nextDependency.file, outputDir) + dependencyCounter++ } } } -task startInstalledApk(type: Exec) { +task collectAllJars { + description "gathers all paths to jar dependencies before building metadata with them" + + def sdkPath = android.sdkDirectory.getAbsolutePath() + def androidJar = sdkPath + "/platforms/" + android.compileSdkVersion + "/android.jar" + doFirst { - println "Starting test application" + def allJarPaths = new LinkedList() + allJarPaths.add(androidJar) + def ft = fileTree(dir: extractedDependenciesDir, include: "**/*.jar") + ft.each { currentJarFile -> + allJarPaths.add(currentJarFile.getAbsolutePath()) + } - if (isWinOs) { - commandLine "cmd", "/c", "adb", runOnDeviceOrEmulator, "shell", "am", "start", "-n", "com.tns.testapplication/com.tns.NativeScriptActivity", "-a", "android.intent.action.MAIN", "-c", "android.intent.category.LAUNCHER" - } else { - commandLine "adb", runOnDeviceOrEmulator, "shell", "am", "start", "-n", "com.tns.testapplication/com.tns.NativeScriptActivity", "-a", "android.intent.action.MAIN", "-c", "android.intent.category.LAUNCHER" + new File("$BUILD_TOOLS_PATH/$SBG_JAVA_DEPENDENCIES").withWriter { out -> + allJarPaths.each { out.println it } + } + new File("$BUILD_TOOLS_PATH/$MDG_JAVA_DEPENDENCIES").withWriter { out -> + allJarPaths.each { + if (it.endsWith(".jar")) { + out.println it + } + } + } + new File("$BUILD_TOOLS_PATH/$SBG_INPUT_OUTPUT_DIRS").withWriter { out -> + out.println INPUT_JS_DIR + out.println OUTPUT_JAVA_DIR } } } -task createDistFolder { - doLast { - def distDir = file("$rootDir/dist") - distDir.mkdirs() +task buildMetadata(type: JavaExec) { + description "builds metadata with provided jar dependencies" + + inputs.files("$MDG_JAVA_DEPENDENCIES") + inputs.dir("$buildDir/intermediates/classes") + + outputs.files("$METADATA_OUT_PATH/treeNodeStream.dat", "$METADATA_OUT_PATH/treeStringsStream.dat", "$METADATA_OUT_PATH/treeValueStream.dat") + + doFirst { + // get compiled classes to pass to metadata generator + // these need to be called after the classes have compiled + def classesDir = "$buildDir/intermediates/classes" + + def classesSubDirs = new File(classesDir).listFiles() + def selectedBuildType = project.ext.selectedBuildType + + def generatedClasses = new LinkedList() + for (File subDir : classesSubDirs) { + if (subDir.getName().equals(selectedBuildType)) { + generatedClasses.add(subDir.getAbsolutePath()) + } + } + + new File("$BUILD_TOOLS_PATH/$MDG_OUTPUT_DIR").withWriter { out -> + out.println "$METADATA_OUT_PATH" + } + + new File("$BUILD_TOOLS_PATH/$MDG_JAVA_DEPENDENCIES").withWriterAppend { out -> + generatedClasses.each { out.println it } + } + + workingDir "$BUILD_TOOLS_PATH" + main "-jar" + + args "android-metadata-generator.jar" } } -task waitForUnitTestResultFile(type: Exec) { +task generateTypescriptDefinitions(type: JavaExec) { + def paramz = new ArrayList() + def includeDirs = ["com.android.support", "/platforms/" + android.compileSdkVersion] + doFirst { - println "Waiting for tests to finish..." + delete "$TYPINGS_PATH" + + workingDir "$BUILD_TOOLS_PATH" - if (isWinOs) { - commandLine "cmd", "/c", "node", "$rootDir\\tools\\try_to_find_test_result_file.js", runOnDeviceOrEmulator - } else { - commandLine "node", "$rootDir/tools/try_to_find_test_result_file.js", runOnDeviceOrEmulator + main "-jar" + + paramz.add("dts-generator.jar") + paramz.add("-input") + + for (String jarPath : project.jarFiles) { + // don't generate typings for runtime jars and classes + if (shouldIncludeDirForTypings(jarPath, includeDirs)) { + paramz.add(jarPath) + } } + + paramz.add("-output") + paramz.add("typings") + + logger.info("Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', '')) + args paramz.toArray() } } -task copyResultToDist(type: Copy) { - from "$rootDir/app/android_unit_test_results.xml" - into "$rootDir/dist" +generateTypescriptDefinitions.onlyIf { + project.hasProperty("generateTypings") && Boolean.parseBoolean(project.generateTypings) } -task deleteRootLevelResult(type: Delete) { - delete "$rootDir/app/android_unit_test_results.xml" +static def shouldIncludeDirForTypings(path, includeDirs) { + for (String p : includeDirs) { + if (path.indexOf(p) > -1) { + return true + } + } + + return false } -deletePreviousResultXml.dependsOn(deleteDist) -installApk.dependsOn(deletePreviousResultXml) -startInstalledApk.dependsOn(installApk) -createDistFolder.dependsOn(startInstalledApk) -waitForUnitTestResultFile.dependsOn(createDistFolder) -copyResultToDist.dependsOn(waitForUnitTestResultFile) -deleteRootLevelResult.dependsOn(copyResultToDist) +task copyTypings { + doLast { + println "Copied generated typings to application root level. Make sure to import android.d.ts in reference.d.ts" -task runtests { - dependsOn deleteRootLevelResult + copy { + from "$TYPINGS_PATH" + into "$USER_PROJECT_ROOT" + } + } } -tasks.whenTaskAdded { task -> +copyTypings.onlyIf { generateTypescriptDefinitions.didWork } - if (task.getName() == "assembleDebug") { - runtests.dependsOn assembleDebug +task validateAppIdMatch { + doLast { + def packageJsonFile = new File("$USER_PROJECT_ROOT/$PACKAGE_JSON") + def lineSeparator = System.getProperty("line.separator") + + if (packageJsonFile.exists() && !project.hasProperty("release")) { + String content = packageJsonFile.getText("UTF-8") + def jsonSlurper = new JsonSlurper() + def packageJsonMap = jsonSlurper.parseText(content) + + if (packageJsonMap.nativescript.id != android.defaultConfig.applicationId) { + def errorMessage = "${lineSeparator}WARNING: The Application identifier is different from the one inside $PACKAGE_JSON file.$lineSeparator" + + "NativeScript CLI might not work properly.$lineSeparator" + + "Update the application identifier in $PACKAGE_JSON and app.gradle so that they match." + logger.error(errorMessage) + } + } } -} \ No newline at end of file +} + +//////////////////////////////////////////////////////////////////////////////////// +////////////////////////////// OPTIONAL TASKS ////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////// + +//////// custom clean /////////// +task cleanSbg(type: Delete) { + delete "$BUILD_TOOLS_PATH/$SBG_JS_PARCED_FILES", + "$BUILD_TOOLS_PATH/$SBG_JAVA_DEPENDENCIES", + "$BUILD_TOOLS_PATH/$SBG_INTERFACE_NAMES", + "$BUILD_TOOLS_PATH/$SBG_BINDINGS_NAME", + "$BUILD_TOOLS_PATH/$SBG_INPUT_OUTPUT_DIRS", + "$OUTPUT_JAVA_DIR/com/tns/gen" +} + +task cleanMdg(type: Delete) { + delete "$BUILD_TOOLS_PATH/$MDG_OUTPUT_DIR", + "$BUILD_TOOLS_PATH/$MDG_JAVA_DEPENDENCIES", + "$METADATA_OUT_PATH" +} + +cleanSbg.dependsOn(cleanMdg) +clean.dependsOn(cleanSbg) \ No newline at end of file diff --git a/test-app/app/src/main/java/com/tns/ErrorReport.java b/test-app/app/src/debug/java/com/tns/ErrorReport.java similarity index 100% rename from test-app/app/src/main/java/com/tns/ErrorReport.java rename to test-app/app/src/debug/java/com/tns/ErrorReport.java diff --git a/test-app/app/src/main/java/com/tns/ErrorReportActivity.java b/test-app/app/src/debug/java/com/tns/ErrorReportActivity.java similarity index 100% rename from test-app/app/src/main/java/com/tns/ErrorReportActivity.java rename to test-app/app/src/debug/java/com/tns/ErrorReportActivity.java diff --git a/test-app/app/src/main/java/com/tns/NativeScriptSyncService.java b/test-app/app/src/debug/java/com/tns/NativeScriptSyncService.java similarity index 100% rename from test-app/app/src/main/java/com/tns/NativeScriptSyncService.java rename to test-app/app/src/debug/java/com/tns/NativeScriptSyncService.java diff --git a/build-artifacts/project-template-gradle/app/src/debug/res/layout/error_activity.xml b/test-app/app/src/debug/res/layout/error_activity.xml similarity index 100% rename from build-artifacts/project-template-gradle/app/src/debug/res/layout/error_activity.xml rename to test-app/app/src/debug/res/layout/error_activity.xml diff --git a/build-artifacts/project-template-gradle/app/src/debug/res/layout/exception_tab.xml b/test-app/app/src/debug/res/layout/exception_tab.xml similarity index 100% rename from build-artifacts/project-template-gradle/app/src/debug/res/layout/exception_tab.xml rename to test-app/app/src/debug/res/layout/exception_tab.xml diff --git a/build-artifacts/project-template-gradle/app/src/debug/res/layout/logcat_tab.xml b/test-app/app/src/debug/res/layout/logcat_tab.xml similarity index 100% rename from build-artifacts/project-template-gradle/app/src/debug/res/layout/logcat_tab.xml rename to test-app/app/src/debug/res/layout/logcat_tab.xml diff --git a/build-artifacts/project-template-gradle/app/src/debug/res/values/colors.xml b/test-app/app/src/debug/res/values/colors.xml similarity index 100% rename from build-artifacts/project-template-gradle/app/src/debug/res/values/colors.xml rename to test-app/app/src/debug/res/values/colors.xml diff --git a/test-app/app/src/main/assets/app/shared b/test-app/app/src/main/assets/app/shared index fe68ba3a8..7f5544c5a 160000 --- a/test-app/app/src/main/assets/app/shared +++ b/test-app/app/src/main/assets/app/shared @@ -1 +1 @@ -Subproject commit fe68ba3a86daed1dc46d4aa10951f3cf03a0242a +Subproject commit 7f5544c5a1d0cbf1de62147f541bbeddcd1c03e8 diff --git a/test-app/app/src/main/assets/app/tests/package.json b/test-app/app/src/main/assets/app/tests/package.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/test-app/app/src/main/assets/app/tests/package.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/test-app/app/src/main/assets/app/tns_modules/tns-core-modules/shared b/test-app/app/src/main/assets/app/tns_modules/tns-core-modules/shared index 52e6736e0..35e217ecc 160000 --- a/test-app/app/src/main/assets/app/tns_modules/tns-core-modules/shared +++ b/test-app/app/src/main/assets/app/tns_modules/tns-core-modules/shared @@ -1 +1 @@ -Subproject commit 52e6736e080fc93764c1c087840779ffd7f16f49 +Subproject commit 35e217ecc518fd2f9c6ae046ec4b421183409938 diff --git a/test-app/app/src/main/assets/metadata/treeNodeStream.dat b/test-app/app/src/main/assets/metadata/treeNodeStream.dat deleted file mode 100644 index d0356988b..000000000 Binary files a/test-app/app/src/main/assets/metadata/treeNodeStream.dat and /dev/null differ diff --git a/test-app/app/src/main/assets/metadata/treeStringsStream.dat b/test-app/app/src/main/assets/metadata/treeStringsStream.dat deleted file mode 100644 index bbfda3c7a..000000000 Binary files a/test-app/app/src/main/assets/metadata/treeStringsStream.dat and /dev/null differ diff --git a/test-app/app/src/main/assets/metadata/treeValueStream.dat b/test-app/app/src/main/assets/metadata/treeValueStream.dat deleted file mode 100644 index d1db92344..000000000 Binary files a/test-app/app/src/main/assets/metadata/treeValueStream.dat and /dev/null differ diff --git a/test-app/app/src/main/java/com/tns/NativeScriptActivity.java b/test-app/app/src/main/java/com/tns/NativeScriptActivity.java deleted file mode 100644 index 3c0026d8d..000000000 --- a/test-app/app/src/main/java/com/tns/NativeScriptActivity.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Warning: this file may be auto-generated in future. Edit with caution. - */ -package com.tns; - -@JavaScriptImplementation(javaScriptFile = "./MyActivity.js") -public class NativeScriptActivity extends android.app.Activity { - public NativeScriptActivity() { - com.tns.Runtime.initInstance(this); - } - - protected void onCreate(android.os.Bundle param_0) { - Object[] args = new Object[1]; - args[0] = param_0; - com.tns.Runtime.callJSMethod(this, "onCreate", void.class, args); - } -} \ No newline at end of file diff --git a/test-app/app/src/main/res/layout/error_activity.xml b/test-app/app/src/main/res/layout/error_activity.xml deleted file mode 100644 index 8720947cf..000000000 --- a/test-app/app/src/main/res/layout/error_activity.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/test-app/app/src/main/res/layout/exception_tab.xml b/test-app/app/src/main/res/layout/exception_tab.xml deleted file mode 100644 index 4e9bca2bb..000000000 --- a/test-app/app/src/main/res/layout/exception_tab.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - -