
main.java.com.debughelper.tools.r8.SwissArmyKnife Maven / Gradle / Ivy
Show all versions of debughelper Show documentation
// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.debughelper.tools.r8;
import com.debughelper.tools.r8.D8;
import com.debughelper.tools.r8.D8Logger;
import com.debughelper.tools.r8.DexSegments;
import com.debughelper.tools.r8.Disassemble;
import com.debughelper.tools.r8.ExtractMarker;
import com.debughelper.tools.r8.GenerateMainDexList;
import com.debughelper.tools.r8.JarDiff;
import com.debughelper.tools.r8.PrintSeeds;
import com.debughelper.tools.r8.PrintUses;
import com.debughelper.tools.r8.bisect.Bisect;
import com.debughelper.tools.r8.compatdx.CompatDx;
import com.debughelper.tools.r8.compatproguard.CompatProguard;
import com.debughelper.tools.r8.dexfilemerger.DexFileMerger;
import com.debughelper.tools.r8.dexsplitter.DexSplitter;
import java.util.Arrays;
/**
* Common entry point to everything in the R8 project.
*
* This class is used as the main class in {@code r8.jar}. It checks the first command-line
* argument to find the tool to run, or runs {@link R8} if the first argument is not a recognized
* tool name.
*
*
The set of tools recognized by this class is defined by a switch statement in {@link
* SwissArmyKnife#main(String[])}.
*/
public class SwissArmyKnife {
public static void main(String[] args) throws Exception {
if (args.length == 0) {
runDefault(args);
return;
}
switch (args[0]) {
case "bisect":
Bisect.main(shift(args));
break;
case "compatdx":
CompatDx.main(shift(args));
break;
case "compatproguard":
CompatProguard.main(shift(args));
break;
case "d8":
D8.main(shift(args));
break;
case "d8logger":
D8Logger.main(shift(args));
break;
case "dexfilemerger":
DexFileMerger.main(shift(args));
break;
case "dexsegments":
DexSegments.main(shift(args));
break;
case "dexsplitter":
DexSplitter.main(shift(args));
break;
case "disasm":
Disassemble.main(shift(args));
break;
case "extractmarker":
ExtractMarker.main(shift(args));
break;
case "jardiff":
JarDiff.main(shift(args));
break;
case "jarsizecompare":
JarSizeCompare.main(shift(args));
break;
case "maindex":
GenerateMainDexList.main(shift(args));
break;
case "printseeds":
PrintSeeds.main(shift(args));
break;
case "printuses":
PrintUses.main(shift(args));
break;
case "r8":
R8.main(shift(args));
break;
default:
runDefault(args);
break;
}
}
private static void runDefault(String[] args) {
R8.main(args);
}
private static String[] shift(String[] args) {
return Arrays.copyOfRange(args, 1, args.length);
}
}