1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package vogar.android;
18 
19 import java.io.File;
20 import vogar.Action;
21 import vogar.Classpath;
22 import vogar.Result;
23 import vogar.tasks.Task;
24 
25 public final class DexTask extends Task {
26     private final AndroidSdk androidSdk;
27     private final Classpath classpath;
28     private final boolean benchmark;
29     private final File jar;
30     private final Action action;
31     private final File localDex;
32 
DexTask(AndroidSdk androidSdk, Classpath classpath, boolean benchmark, String name, File jar, Action action, File localDex)33     public DexTask(AndroidSdk androidSdk, Classpath classpath, boolean benchmark, String name,
34             File jar, Action action, File localDex) {
35         super("dex " + name);
36         this.androidSdk = androidSdk;
37         this.classpath = classpath;
38         this.benchmark = benchmark;
39         this.jar = jar;
40         this.action = action;
41         this.localDex = localDex;
42     }
43 
execute()44     @Override protected Result execute() throws Exception {
45         // make the local dex (inside a jar)
46         Classpath cp = Classpath.of(jar);
47         if (benchmark && action != null) {
48             cp.addAll(classpath);
49         }
50         androidSdk.dex(localDex, cp);
51         return Result.SUCCESS;
52     }
53 }
54