/** * Extracts the class name from a type descriptor. */ public static String classNameOnly(String typeName) { String dotted = descriptorToDot(typeName); int start = dotted.lastIndexOf("."); if (start < 0) { return dotted; } else { return dotted.substring(start + 1); } }
public static void generateFirstHeader(String fileName, String format) { generateHeader0(fileName, format); }
public static void generate(DexData dexData, String format, boolean justClasses) { if (format.equals("brief")) { printBrief(dexData, justClasses); } else if (format.equals("xml")) { printXml(dexData, justClasses); } else { /* should've been trapped in arg handler */ throw new RuntimeException("unknown output format"); } }
/** * Prints the data in a simple human-readable format. */ static void printBrief(DexData dexData, boolean justClasses) { ClassRef[] externClassRefs = dexData.getExternalReferences(); printClassRefs(externClassRefs, justClasses); if (!justClasses) { printFieldRefs(externClassRefs); printMethodRefs(externClassRefs); } }
ClassRef cref = externClassRefs[i]; String declClassName = cref.getName(); String className = classNameOnly(declClassName); String packageName = packageNameOnly(declClassName); printXmlFields(cref); printXmlMethods(cref);
classNameOnly(declClassName) + "\">"); } else { out.println(IN3 + "<method name=\"" + mref.getName() + "\" return=\"" + descriptorToDot(mref.getReturnTypeName()) + "\">"); for (int j = 0; j < args.length; j++) { out.println(IN4 + "<parameter type=\"" + descriptorToDot(args[j]) + "\"/>");
String classDescriptor = methodRef.getDeclClassName(); String packageName = includeClasses ? Output.descriptorToDot(classDescriptor).replace('$', '.') : Output.packageNameOnly(classDescriptor); if (packageFilter != null && !packageName.startsWith(packageFilter)) {
descr = primitiveTypeLabel(descr.charAt(offset)); offset = 0; targetLen = descr.length();
protected Report createReport(Map<String, RandomAccessFile> dexFiles) throws IOException { Report report = new Report(); report.root = new Node("<root>"); for (Map.Entry<String, RandomAccessFile> dexFileEntry : dexFiles.entrySet()) { DexData dexData = loadDexData(dexFileEntry.getValue()); MethodRef[] methodRefs = dexData.getMethodRefs(); report.totalMethods += methodRefs.length; report.dexFileMethods.put(dexFileEntry.getKey(), methodRefs.length); for (MethodRef methodRef : methodRefs) { String packageName = Output.packageNameOnly(methodRef.getDeclClassName()); String[] packageNamePieces = splitPackageName(packageName); countMethod(packageNamePieces, report.root); } } return report; }
ClassRef cref = externClassRefs[i]; String declClassName = cref.getName(); String className = classNameOnly(declClassName); String packageName = packageNameOnly(declClassName); printXmlFields(cref); printXmlMethods(cref);
/** * Prints the data in a simple human-readable format. */ static void printBrief(DexData dexData, boolean justClasses) { ClassRef[] externClassRefs = dexData.getExternalReferences(); printClassRefs(externClassRefs, justClasses); if (!justClasses) { printFieldRefs(externClassRefs); printMethodRefs(externClassRefs); } }
classNameOnly(declClassName) + "\">"); } else { out.println(IN3 + "<method name=\"" + mref.getName() + "\" return=\"" + descriptorToDot(mref.getReturnTypeName()) + "\">"); for (int j = 0; j < args.length; j++) { out.println(IN4 + "<parameter type=\"" + descriptorToDot(args[j]) + "\"/>");
final String classDescriptor = fieldRef.getDeclClassName(); final String packageName = includeClasses ? Output.descriptorToDot(classDescriptor).replace('$', '.') : Output.packageNameOnly(classDescriptor); if (packageFilter != null && !packageName.startsWith(packageFilter)) {
descr = primitiveTypeLabel(descr.charAt(offset)); offset = 0; targetLen = descr.length();
ClassRef cref = externClassRefs[i]; String declClassName = cref.getName(); String className = classNameOnly(declClassName); String packageName = packageNameOnly(declClassName); printXmlFields(cref); printXmlMethods(cref);
/** * Prints the data in a simple human-readable format. */ static void printBrief(DexData dexData, boolean justClasses) { ClassRef[] externClassRefs = dexData.getExternalReferences(); printClassRefs(externClassRefs, justClasses); if (!justClasses) { printFieldRefs(externClassRefs); printMethodRefs(externClassRefs); } }
/** * Extracts the class name from a type descriptor. */ public static String classNameOnly(String typeName) { String dotted = descriptorToDot(typeName); int start = dotted.lastIndexOf("."); if (start < 0) { return dotted; } else { return dotted.substring(start+1); } }
public static void generate(DexData dexData, String format, boolean justClasses) { if (format.equals("brief")) { printBrief(dexData, justClasses); } else if (format.equals("xml")) { printXml(dexData, justClasses); } else { /* should've been trapped in arg handler */ throw new RuntimeException("unknown output format"); } }
classNameOnly(declClassName) + "\">"); } else { out.println(IN3 + "<method name=\"" + mref.getName() + "\" return=\"" + descriptorToDot(mref.getReturnTypeName()) + "\">"); for (int j = 0; j < args.length; j++) { out.println(IN4 + "<parameter type=\"" + descriptorToDot(args[j]) + "\"/>");
final String classDescriptor = methodRef.getDeclClassName(); final String packageName = includeClasses ? Output.descriptorToDot(classDescriptor).replace('$', '.') : Output.packageNameOnly(classDescriptor); if (packageFilter != null && !packageName.startsWith(packageFilter)) {