diff options
author | mikaelpeltier <mikaelpeltier@google.com> | 2015-03-11 10:42:13 +0100 |
---|---|---|
committer | mikaelpeltier <mikaelpeltier@google.com> | 2015-03-11 11:03:21 +0100 |
commit | 5bf40f1a249953e7152fa5900f3a6c5e048db30a (patch) | |
tree | af8c7cd52b2539c5b35e5bfb857af74a9ea5548d /jack-api | |
parent | 14f66d21a64021d5492c56aff5055e5e7382dfd4 (diff) | |
download | toolchain_jack-5bf40f1a249953e7152fa5900f3a6c5e048db30a.zip toolchain_jack-5bf40f1a249953e7152fa5900f3a6c5e048db30a.tar.gz toolchain_jack-5bf40f1a249953e7152fa5900f3a6c5e048db30a.tar.bz2 |
Add a sample based on service loader that really do a compilation
Change-Id: Ie54f774222827806859ccef37ebb2a50a7708d38
Diffstat (limited to 'jack-api')
-rw-r--r-- | jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java | 59 |
1 files changed, 57 insertions, 2 deletions
diff --git a/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java b/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java index 995bd9d..3754946 100644 --- a/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java +++ b/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java @@ -16,8 +16,16 @@ package com.android.jack.api.example; +import com.android.jack.api.ConfigNotSupportedException; import com.android.jack.api.JackConfigProvider; +import com.android.jack.api.v01.AbortException; +import com.android.jack.api.v01.Api01CompilationTask; +import com.android.jack.api.v01.Api01Config; +import com.android.jack.api.v01.ConfigurationException; +import com.android.jack.api.v01.UnrecoverableException; +import java.io.File; +import java.util.Arrays; import java.util.NoSuchElementException; import java.util.ServiceLoader; @@ -28,12 +36,59 @@ import java.util.ServiceLoader; public class SampleWithServiceLoader { public static void main(String[] args) throws SecurityException, IllegalArgumentException { + if (args.length != 3) { + System.out.println( + "Usage: <jack core library> <source files directory> <output dex files directory>"); + return; + } + ServiceLoader<JackConfigProvider> serviceLoader = ServiceLoader.load(JackConfigProvider.class); + JackConfigProvider confProvider; try { - JackConfigProvider confProvider = serviceLoader.iterator().next(); - System.out.println("Jack version: " + confProvider.getCompilerVersion()); + confProvider = serviceLoader.iterator().next(); } catch (NoSuchElementException e) { System.out.println("Check that jack.jar is on classpath"); + return; + } + + Api01CompilationTask compilationTask; + Api01Config config; + + // Get configuration object + try { + config = confProvider.getConfig(Api01Config.class); + } catch (ConfigNotSupportedException e1) { + System.err.println("Brest config not supported)"); + return; + } + + // Configure the compiler + try { + config.setClasspath(Arrays.asList(new File(args[0]))); + + config.setSourceEntries(Arrays.asList(new File(args[1]))); + + config.setOutputDexDir(new File(args[2])); + + // Check and build compiler + compilationTask = config.getTask(); + } catch (ConfigurationException e) { + System.err.println(e.getMessage()); + return; + } + + // Run the compilation + try { + compilationTask.run(); + } catch (AbortException e) { + System.out.println("User error, see reporter"); + return; + } catch (UnrecoverableException e) { + System.out.println("Something out of Jack control has happen: " + e.getMessage()); + return; + } catch (ConfigurationException e) { + System.err.println(e.getMessage()); + return; } } } |