From 6bdc98209f78d37928c92f3c195a5618e3e55b38 Mon Sep 17 00:00:00 2001 From: Vasil Trifonov Date: Mon, 9 Sep 2019 17:25:44 +0300 Subject: [PATCH 1/4] Show only the error message when built tool fails Colorize the error outputs --- .gitignore | 3 +- build.gradle | 12 +++-- test-app/app/build.gradle | 17 +++++-- .../app/gradle-helpers/BuildToolTask.gradle | 50 +++++++++++++++++++ test-app/build-tools/android-dts-generator | 2 +- .../src/com/telerik/metadata/Generator.java | 48 ++++++++++-------- .../staticbindinggenerator/Main.java | 31 +++++++----- test-app/build.gradle | 4 +- test-app/{ => gradle-helpers}/paths.gradle | 0 .../user_properties_reader.gradle | 0 10 files changed, 123 insertions(+), 44 deletions(-) create mode 100644 test-app/app/gradle-helpers/BuildToolTask.gradle rename test-app/{ => gradle-helpers}/paths.gradle (100%) rename test-app/{ => gradle-helpers}/user_properties_reader.gradle (100%) diff --git a/.gitignore b/.gitignore index 2ded57745..a0d88810a 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,5 @@ bin/ .settings .classpath -android-runtime.iml \ No newline at end of file +android-runtime.iml +test-app/build-tools/*.log diff --git a/build.gradle b/build.gradle index 51f15a621..ccfc7815e 100644 --- a/build.gradle +++ b/build.gradle @@ -278,6 +278,10 @@ task copyFilesToProjectTemeplate { into "$DIST_FRAMEWORK_PATH/app/libs/runtime-libs" rename "runtime-optimized-with-inspector-release.aar", "nativescript-optimized-with-inspector.aar" } + copy { + from "$TEST_APP_PATH/app/gradle-helpers/BuildToolTask.gradle" + into "$DIST_FRAMEWORK_PATH/app/gradle-helpers" + } copy { from "$TEST_APP_PATH/app/build.gradle" into "$DIST_FRAMEWORK_PATH/app" @@ -287,12 +291,12 @@ task copyFilesToProjectTemeplate { into "$DIST_FRAMEWORK_PATH" } copy { - from "$TEST_APP_PATH/paths.gradle" - into "$DIST_FRAMEWORK_PATH" + from "$TEST_APP_PATH/gradle-helpers/paths.gradle" + into "$DIST_FRAMEWORK_PATH/gradle-helpers" } copy { - from "$TEST_APP_PATH/user_properties_reader.gradle" - into "$DIST_FRAMEWORK_PATH" + from "$TEST_APP_PATH/gradle-helpers/user_properties_reader.gradle" + into "$DIST_FRAMEWORK_PATH/gradle-helpers" } copy { from "$TEST_APP_PATH/gradle" diff --git a/test-app/app/build.gradle b/test-app/app/build.gradle index b2020a7d5..b9a14a3c3 100644 --- a/test-app/app/build.gradle +++ b/test-app/app/build.gradle @@ -27,8 +27,12 @@ import java.nio.file.Files import java.nio.file.Paths import java.nio.file.StandardCopyOption import java.security.MessageDigest +import org.gradle.internal.logging.text.StyledTextOutputFactory apply plugin: "com.android.application" +apply from: "gradle-helpers/BuildToolTask.gradle" +def outLogger = services.get(StyledTextOutputFactory).create("colouredOutputLogger") +gradle.useLogger(new BuildAdapter()) def enableKotlin = (project.hasProperty("useKotlin") && project.useKotlin == "true") @@ -464,7 +468,7 @@ tasks.whenTaskAdded({ org.gradle.api.DefaultTask currentTask -> ///////////////////////////// EXECUTUION PHASE ///////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// -task runSbg(type: JavaExec) { +task runSbg(type: BuildToolTask) { dependsOn "collectAllJars" if (!findProject(':static-binding-generator').is(null)) { dependsOn ':static-binding-generator:jar' @@ -484,6 +488,8 @@ task runSbg(type: JavaExec) { paramz.add("-show-deprecation-warnings") } + setOutputs outLogger + args paramz doFirst { @@ -695,7 +701,7 @@ task collectAllJars { } } -task buildMetadata(type: JavaExec) { +task buildMetadata(type: BuildToolTask) { if (!findProject(':android-metadata-generator').is(null)) { dependsOn ':android-metadata-generator:jar' } @@ -749,11 +755,13 @@ task buildMetadata(type: JavaExec) { workingDir "$BUILD_TOOLS_PATH" main "-jar" + setOutputs outLogger + args "android-metadata-generator.jar" } } -task generateTypescriptDefinitions(type: JavaExec) { +task generateTypescriptDefinitions(type: BuildToolTask) { if (!findProject(':dts-generator').is(null)) { dependsOn ':dts-generator:jar' } @@ -785,6 +793,9 @@ task generateTypescriptDefinitions(type: JavaExec) { logger.info("Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', '')) println "Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', '') + + setOutputs outLogger + args paramz.toArray() } } diff --git a/test-app/app/gradle-helpers/BuildToolTask.gradle b/test-app/app/gradle-helpers/BuildToolTask.gradle new file mode 100644 index 000000000..7b6052f4c --- /dev/null +++ b/test-app/app/gradle-helpers/BuildToolTask.gradle @@ -0,0 +1,50 @@ +import static org.gradle.internal.logging.text.StyledTextOutput.Style + +class BuildToolTask extends JavaExec { + void setOutputs(def logger) { + def logFile = new File("$workingDir/${name}.log") + if(logFile.exists()) { + logFile.delete() + } + standardOutput new FileOutputStream(logFile) + errorOutput new FailureOutputStream(logger, logFile) + } +} + +class FailureOutputStream extends OutputStream { + private logger + private File logFile + private currentLine = "" + private firstWrite = true + FailureOutputStream(inLogger, inLogFile) { + logger = inLogger + logFile = inLogFile + } + + @Override + void write(int i) throws IOException { + if(firstWrite) { + println "" + firstWrite = false + } + currentLine += String.valueOf((char) i) + } + + @Override + void flush() { + if(currentLine?.trim()) { + logger.withStyle(Style.Failure).println currentLine.trim() + currentLine = "" + } + } + + @Override + void close() { + if(!firstWrite && logFile.exists()) { + logger.withStyle(Style.Info).println "Detailed log here: ${logFile.getAbsolutePath()}\n" + } + super.close() + } +} + +ext.BuildToolTask = BuildToolTask \ No newline at end of file diff --git a/test-app/build-tools/android-dts-generator b/test-app/build-tools/android-dts-generator index edc8465dc..678d11b6b 160000 --- a/test-app/build-tools/android-dts-generator +++ b/test-app/build-tools/android-dts-generator @@ -1 +1 @@ -Subproject commit edc8465dc5923118ff625b41bf6b812891d3a9f3 +Subproject commit 678d11b6bda9d552ca3aedbffe967f0234f531f2 diff --git a/test-app/build-tools/android-metadata-generator/src/src/com/telerik/metadata/Generator.java b/test-app/build-tools/android-metadata-generator/src/src/com/telerik/metadata/Generator.java index f684262ff..9ad5c4f97 100644 --- a/test-app/build-tools/android-metadata-generator/src/src/com/telerik/metadata/Generator.java +++ b/test-app/build-tools/android-metadata-generator/src/src/com/telerik/metadata/Generator.java @@ -19,33 +19,39 @@ public class Generator { /** * @param args */ - public static void main(String[] args) throws Exception { - String metadataOutputDir = "bin"; - List params = null; - + public static void main(String[] args) { try { - metadataOutputDir = getFileRows(MDG_OUTPUT_DIR).get(0); - } catch (Exception e) { - throw new InvalidParameterException(String.format("You need to pass a file containing a single line: the output dir for the metadata generator1\n", e.getMessage())); - } - try { - params = getFileRows(MDG_JAVA_DEPENDENCIES); - } catch (Exception e) { - throw new InvalidParameterException(String.format("You need to pass a file containing a list of jar/class paths, so metadata can be generated for them!\n", e.getMessage())); - } + String metadataOutputDir; + List params; - TreeNode root = Builder.build(params); + try { + metadataOutputDir = getFileRows(MDG_OUTPUT_DIR).get(0); + } catch (Exception e) { + throw new InvalidParameterException(String.format("You need to pass a file containing a single line: the output dir for the metadata generator1\n", e.getMessage())); + } + try { + params = getFileRows(MDG_JAVA_DEPENDENCIES); + } catch (Exception e) { + throw new InvalidParameterException(String.format("You need to pass a file containing a list of jar/class paths, so metadata can be generated for them!\n", e.getMessage())); + } - FileOutputStream ovs = new FileOutputStream(new File(metadataOutputDir, "treeValueStream.dat")); - FileStreamWriter outValueStream = new FileStreamWriter(ovs); + TreeNode root = Builder.build(params); - FileOutputStream ons = new FileOutputStream(new File(metadataOutputDir, "treeNodeStream.dat")); - FileStreamWriter outNodeStream = new FileStreamWriter(ons); + FileOutputStream ovs = new FileOutputStream(new File(metadataOutputDir, "treeValueStream.dat")); + FileStreamWriter outValueStream = new FileStreamWriter(ovs); - FileOutputStream oss = new FileOutputStream(new File(metadataOutputDir, "treeStringsStream.dat")); - FileStreamWriter outStringsStream = new FileStreamWriter(oss); + FileOutputStream ons = new FileOutputStream(new File(metadataOutputDir, "treeNodeStream.dat")); + FileStreamWriter outNodeStream = new FileStreamWriter(ons); - new Writer(outNodeStream, outValueStream, outStringsStream).writeTree(root); + FileOutputStream oss = new FileOutputStream(new File(metadataOutputDir, "treeStringsStream.dat")); + FileStreamWriter outStringsStream = new FileStreamWriter(oss); + + new Writer(outNodeStream, outValueStream, outStringsStream).writeTree(root); + } catch (Exception ex) { + System.err.println(String.format("Error executing Metadata Generator: %s", ex.getMessage())); + ex.printStackTrace(System.out); + System.exit(1); + } } public static List getFileRows(String filename) throws IOException { diff --git a/test-app/build-tools/static-binding-generator/src/main/java/org/nativescript/staticbindinggenerator/Main.java b/test-app/build-tools/static-binding-generator/src/main/java/org/nativescript/staticbindinggenerator/Main.java index fc98dbac7..06451e758 100644 --- a/test-app/build-tools/static-binding-generator/src/main/java/org/nativescript/staticbindinggenerator/Main.java +++ b/test-app/build-tools/static-binding-generator/src/main/java/org/nativescript/staticbindinggenerator/Main.java @@ -35,22 +35,29 @@ public class Main { inputJsFiles = new ArrayList<>(); } - public static void main(String[] args) throws IOException, ClassNotFoundException { - InputParameters.parseCommand(args); + public static void main(String[] args) { + try { + InputParameters.parseCommand(args); + + validateInput(); - validateInput(); + getWorkerExcludeFile(); - getWorkerExcludeFile(); + List rows = Generator.getRows(dependenciesFile); + GetInterfaceNames.generateInterfaceFile(rows); + generateJsInputFile(); + runJsParser(); - List rows = Generator.getRows(dependenciesFile); - GetInterfaceNames.generateInterfaceFile(rows); - generateJsInputFile(); - runJsParser(); + // generate java bindings + String inputBindingFilename = Paths.get(System.getProperty("user.dir"), SBG_BINDINGS_NAME).toString(); + Generator generator = new Generator(outputDir, rows, isSuppressCallJSMethodExceptionsEnabled()); - // generate java bindings - String inputBindingFilename = Paths.get(System.getProperty("user.dir"), SBG_BINDINGS_NAME).toString(); - Generator generator = new Generator(outputDir, rows, isSuppressCallJSMethodExceptionsEnabled()); - generator.writeBindings(inputBindingFilename); + generator.writeBindings(inputBindingFilename); + } catch (Exception ex) { + System.err.println(String.format("Error executing Static Binding Generator: %s", ex.getMessage())); + ex.printStackTrace(System.out); + System.exit(1); + } } /* diff --git a/test-app/build.gradle b/test-app/build.gradle index 7cfc92863..57de1ae40 100644 --- a/test-app/build.gradle +++ b/test-app/build.gradle @@ -4,8 +4,8 @@ buildscript { def initialize = { -> def userDir = "${rootProject.projectDir}/../.." - apply from: "$rootDir/user_properties_reader.gradle" - apply from: "$rootDir/paths.gradle" + apply from: "$rootDir/gradle-helpers/user_properties_reader.gradle" + apply from: "$rootDir/gradle-helpers/paths.gradle" rootProject.ext.userDefinedGradleProperties = getUserProperties("${getAppResourcesPath(userDir)}/Android") } initialize() diff --git a/test-app/paths.gradle b/test-app/gradle-helpers/paths.gradle similarity index 100% rename from test-app/paths.gradle rename to test-app/gradle-helpers/paths.gradle diff --git a/test-app/user_properties_reader.gradle b/test-app/gradle-helpers/user_properties_reader.gradle similarity index 100% rename from test-app/user_properties_reader.gradle rename to test-app/gradle-helpers/user_properties_reader.gradle From 710e1ed9e24dca1a592ee6444566f11d3645fdfb Mon Sep 17 00:00:00 2001 From: Vasil Trifonov Date: Tue, 10 Sep 2019 18:05:56 +0300 Subject: [PATCH 2/4] fixed error logging when there's an error not from BuildToolTask --- test-app/app/build.gradle | 35 +++++++------ .../CustomExecutionLogger.gradle | 52 +++++++++++++++++++ 2 files changed, 70 insertions(+), 17 deletions(-) create mode 100644 test-app/app/gradle-helpers/CustomExecutionLogger.gradle diff --git a/test-app/app/build.gradle b/test-app/app/build.gradle index b9a14a3c3..17bc3fec9 100644 --- a/test-app/app/build.gradle +++ b/test-app/app/build.gradle @@ -28,11 +28,12 @@ import java.nio.file.Paths import java.nio.file.StandardCopyOption import java.security.MessageDigest import org.gradle.internal.logging.text.StyledTextOutputFactory +import static org.gradle.internal.logging.text.StyledTextOutput.Style apply plugin: "com.android.application" apply from: "gradle-helpers/BuildToolTask.gradle" +apply from: "gradle-helpers/CustomExecutionLogger.gradle" def outLogger = services.get(StyledTextOutputFactory).create("colouredOutputLogger") -gradle.useLogger(new BuildAdapter()) def enableKotlin = (project.hasProperty("useKotlin") && project.useKotlin == "true") @@ -43,7 +44,7 @@ if (enableKotlin) { def onlyX86 = project.hasProperty("onlyX86") if (onlyX86) { - println "OnlyX86 build triggered." + outLogger.withStyle(Style.Info).println "OnlyX86 build triggered." } //common @@ -150,7 +151,7 @@ version of the {N} CLI install a previous version of the runtime package - 'tns def pathToBuildScriptGradle = "$absolutePathToAppResources/Android/buildscript.gradle" def buildScriptGradle = file(pathToBuildScriptGradle) if (buildScriptGradle.exists()) { - println "\t + applying user-defined buildscript from ${buildScriptGradle}" + outLogger.withStyle(Style.SuccessHeader).println "\t + applying user-defined buildscript from ${buildScriptGradle}" apply from: pathToBuildScriptGradle, to: buildscript } @@ -158,7 +159,7 @@ version of the {N} CLI install a previous version of the runtime package - 'tns def pathToPluginBuildScriptGradle = "$rootDir/${dep.directory}/$PLATFORMS_ANDROID/buildscript.gradle" def pluginBuildScriptGradle = file(pathToPluginBuildScriptGradle) if (pluginBuildScriptGradle.exists()) { - println "\t + applying user-defined buildscript from dependency ${pluginBuildScriptGradle}" + outLogger.withStyle(Style.SuccessHeader).println "\t + applying user-defined buildscript from dependency ${pluginBuildScriptGradle}" apply from: pathToPluginBuildScriptGradle, to: buildscript } } @@ -176,7 +177,7 @@ def applyBeforePluginGradleConfiguration = { -> def pathToBeforePluginGradle = "$appResourcesPath/Android/before-plugins.gradle" def beforePluginGradle = file(pathToBeforePluginGradle) if (beforePluginGradle.exists()) { - println "\t + applying user-defined configuration from ${beforePluginGradle}" + outLogger.withStyle(Style.SuccessHeader).println "\t + applying user-defined configuration from ${beforePluginGradle}" apply from: pathToBeforePluginGradle } } @@ -186,10 +187,10 @@ def applyAppGradleConfiguration = { -> def pathToAppGradle = "$appResourcesPath/Android/app.gradle" def appGradle = file(pathToAppGradle) if (appGradle.exists()) { - println "\t + applying user-defined configuration from ${appGradle}" + outLogger.withStyle(Style.SuccessHeader).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." + outLogger.withStyle(Style.Info).println "\t + couldn't load user-defined configuration from ${appGradle}. File doesn't exist." } } @@ -215,7 +216,7 @@ def getAppIdentifier = { packageJsonMap -> } def setAppIdentifier = { -> - println "\t + setting applicationId" + outLogger.withStyle(Style.SuccessHeader).println "\t + setting applicationId" File packageJsonFile = new File("$USER_PROJECT_ROOT/$PACKAGE_JSON") if (packageJsonFile.exists()) { @@ -343,7 +344,7 @@ dependencies { androidXMaterialVersion = androidXMaterial } - println "\t + using android X library androidx.legacy:legacy-support-v4:$androidXLegacyVersion" + outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.legacy:legacy-support-v4:$androidXLegacyVersion" implementation "androidx.multidex:multidex:2.0.1" implementation "androidx.legacy:legacy-support-v4:$androidXLegacyVersion" @@ -378,7 +379,7 @@ dependencies { runtime = "nativescript-regular" } - println "\t + adding nativescript runtime package dependency: $runtime" + outLogger.withStyle(Style.SuccessHeader).println "\t + adding nativescript runtime package dependency: $runtime" project.dependencies.add("implementation", [name: runtime, ext: "aar"]) } else { implementation project(':runtime') @@ -401,14 +402,14 @@ task addDependenciesFromNativeScriptPlugins { aarFiles.each { aarFile -> def length = aarFile.name.length() - 4 def fileName = aarFile.name[0.. def jarFileAbsolutePath = jarFile.getAbsolutePath() - println "\t + adding jar plugin dependency: $jarFileAbsolutePath" + outLogger.withStyle(Style.SuccessHeader).println "\t + adding jar plugin dependency: $jarFileAbsolutePath" pluginsJarLibraries.add(jarFile.getAbsolutePath()) } @@ -424,14 +425,14 @@ task addDependenciesFromAppResourcesLibraries { aarFiles.each { aarFile -> def length = aarFile.name.length() - 4 def fileName = aarFile.name[0.. def jarFileAbsolutePath = jarFile.getAbsolutePath() - println "\t + adding jar plugin dependency: $jarFileAbsolutePath" + outLogger.withStyle(Style.SuccessHeader).println "\t + adding jar plugin dependency: $jarFileAbsolutePath" pluginsJarLibraries.add(jarFile.getAbsolutePath()) } @@ -582,7 +583,7 @@ afterEvaluate { project -> } } } else { - println "WARNING: Folder ${jarDir.path} does not exists, the dependent project's classes won't be included in the metadata" + outLogger.withStyle(Style.Info).println "WARNING: Folder ${jarDir.path} does not exists, the dependent project's classes won't be included in the metadata" } } } @@ -792,7 +793,7 @@ task generateTypescriptDefinitions(type: BuildToolTask) { new File("$TYPINGS_PATH").mkdirs() logger.info("Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', '')) - println "Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', '') + outLogger.withStyle(Style.SuccessHeader).println "Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', '') setOutputs outLogger @@ -818,7 +819,7 @@ static def shouldIncludeDirForTypings(path, includeDirs) { task copyTypings { doLast { - println "Copied generated typings to application root level. Make sure to import android.d.ts in reference.d.ts" + outLogger.withStyle(Style.Info).println "Copied generated typings to application root level. Make sure to import android.d.ts in reference.d.ts" copy { from "$TYPINGS_PATH" diff --git a/test-app/app/gradle-helpers/CustomExecutionLogger.gradle b/test-app/app/gradle-helpers/CustomExecutionLogger.gradle new file mode 100644 index 000000000..ec8ea6c42 --- /dev/null +++ b/test-app/app/gradle-helpers/CustomExecutionLogger.gradle @@ -0,0 +1,52 @@ +import org.gradle.internal.logging.text.StyledTextOutputFactory + +import static org.gradle.internal.logging.text.StyledTextOutput.Style +def outLogger = services.get(StyledTextOutputFactory).create("colouredOutputLogger") + +class CustomExecutionLogger extends BuildAdapter implements TaskExecutionListener { + private logger + private failedTask + + CustomExecutionLogger(passedLogger) { + logger = passedLogger + } + + void buildStarted(Gradle gradle) { + failedTask = null + } + + void beforeExecute(Task task) { + } + + void afterExecute(Task task, TaskState state) { + def failure = state.getFailure() + if(failure) { + failedTask = task + } + } + + void buildFinished(BuildResult result) { + def failure = result.getFailure() + if(failure) { + if(failedTask && (failedTask.getClass().getName().contains("BuildToolTask"))) { + // the error from this task is already logged + return + } + + println "" + logger.withStyle(Style.FailureHeader).println failure.getMessage() + + def causeException = failure.getCause() + while (causeException != null) { + failure = causeException + causeException = failure.getCause() + } + if(failure != causeException) { + logger.withStyle(Style.Failure).println failure.getMessage() + } + println "" + } + } +} + +gradle.useLogger(new CustomExecutionLogger(outLogger)) \ No newline at end of file From df9f599547d0da1d85aed185c17161ac6d3cfcdd Mon Sep 17 00:00:00 2001 From: vmutafov Date: Tue, 10 Sep 2019 19:11:26 +0300 Subject: [PATCH 3/4] Copy helper gradle files from app folder when building --- build.gradle | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index ccfc7815e..86e588c73 100644 --- a/build.gradle +++ b/build.gradle @@ -278,10 +278,6 @@ task copyFilesToProjectTemeplate { into "$DIST_FRAMEWORK_PATH/app/libs/runtime-libs" rename "runtime-optimized-with-inspector-release.aar", "nativescript-optimized-with-inspector.aar" } - copy { - from "$TEST_APP_PATH/app/gradle-helpers/BuildToolTask.gradle" - into "$DIST_FRAMEWORK_PATH/app/gradle-helpers" - } copy { from "$TEST_APP_PATH/app/build.gradle" into "$DIST_FRAMEWORK_PATH/app" @@ -298,6 +294,14 @@ task copyFilesToProjectTemeplate { from "$TEST_APP_PATH/gradle-helpers/user_properties_reader.gradle" into "$DIST_FRAMEWORK_PATH/gradle-helpers" } + copy { + from "$TEST_APP_PATH/app/gradle-helpers/CustomExecutionLogger.gradle" + into "$DIST_FRAMEWORK_PATH/app/gradle-helpers" + } + copy { + from "$TEST_APP_PATH/app/gradle-helpers/BuildToolTask.gradle" + into "$DIST_FRAMEWORK_PATH/app/gradle-helpers" + } copy { from "$TEST_APP_PATH/gradle" into "$DIST_FRAMEWORK_PATH/gradle" From 28d95367283527ad3aa1d6f8fa0d739fdfcd665f Mon Sep 17 00:00:00 2001 From: Vasil Trifonov Date: Wed, 11 Sep 2019 09:09:42 +0300 Subject: [PATCH 4/4] catch Throwable instead of Exception to catch Errors as well --- test-app/build-tools/android-dts-generator | 2 +- .../src/src/com/telerik/metadata/Generator.java | 2 +- .../main/java/org/nativescript/staticbindinggenerator/Main.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test-app/build-tools/android-dts-generator b/test-app/build-tools/android-dts-generator index 678d11b6b..f03153eb5 160000 --- a/test-app/build-tools/android-dts-generator +++ b/test-app/build-tools/android-dts-generator @@ -1 +1 @@ -Subproject commit 678d11b6bda9d552ca3aedbffe967f0234f531f2 +Subproject commit f03153eb51d197b28c2fa177ef7b4237266987ca diff --git a/test-app/build-tools/android-metadata-generator/src/src/com/telerik/metadata/Generator.java b/test-app/build-tools/android-metadata-generator/src/src/com/telerik/metadata/Generator.java index 9ad5c4f97..0669f5118 100644 --- a/test-app/build-tools/android-metadata-generator/src/src/com/telerik/metadata/Generator.java +++ b/test-app/build-tools/android-metadata-generator/src/src/com/telerik/metadata/Generator.java @@ -47,7 +47,7 @@ public static void main(String[] args) { FileStreamWriter outStringsStream = new FileStreamWriter(oss); new Writer(outNodeStream, outValueStream, outStringsStream).writeTree(root); - } catch (Exception ex) { + } catch (Throwable ex) { System.err.println(String.format("Error executing Metadata Generator: %s", ex.getMessage())); ex.printStackTrace(System.out); System.exit(1); diff --git a/test-app/build-tools/static-binding-generator/src/main/java/org/nativescript/staticbindinggenerator/Main.java b/test-app/build-tools/static-binding-generator/src/main/java/org/nativescript/staticbindinggenerator/Main.java index 06451e758..1ad9a3ecf 100644 --- a/test-app/build-tools/static-binding-generator/src/main/java/org/nativescript/staticbindinggenerator/Main.java +++ b/test-app/build-tools/static-binding-generator/src/main/java/org/nativescript/staticbindinggenerator/Main.java @@ -53,7 +53,7 @@ public static void main(String[] args) { Generator generator = new Generator(outputDir, rows, isSuppressCallJSMethodExceptionsEnabled()); generator.writeBindings(inputBindingFilename); - } catch (Exception ex) { + } catch (Throwable ex) { System.err.println(String.format("Error executing Static Binding Generator: %s", ex.getMessage())); ex.printStackTrace(System.out); System.exit(1);