本文整理汇总了Java中org.jf.dexlib2.dexbacked.DexBackedClassDef.getStaticFields方法的典型用法代码示例。如果您正苦于以下问题:Java DexBackedClassDef.getStaticFields方法的具体用法?Java DexBackedClassDef.getStaticFields怎么用?Java DexBackedClassDef.getStaticFields使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.jf.dexlib2.dexbacked.DexBackedClassDef
的用法示例。
在下文中一共展示了DexBackedClassDef.getStaticFields方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: isStaticFiled
import org.jf.dexlib2.dexbacked.DexBackedClassDef; //导入方法依赖的package包/类
private static boolean isStaticFiled(DexBackedClassDef classDef, FieldReference reference) {
for (DexBackedField field : classDef.getStaticFields()) {
if (field.equals(reference)) {
return true;
}
}
return false;
}
示例2: processDex
import org.jf.dexlib2.dexbacked.DexBackedClassDef; //导入方法依赖的package包/类
private static int processDex(String outputDirectory) {
int rtn = 0;
int i = 0;
Set<? extends DexBackedClassDef> classDefs = gDexFile.getClasses();
/* Find all IInterfaces first */
for (DexBackedClassDef classDef: classDefs) {
String className = Utils.descriptorToDot(classDef.getType());
/* No support AIDL */
if (className.startsWith("android.support")) {
continue;
}
SortedSet<String> interfaces = new TreeSet(classDef.getInterfaces());
if (interfaces.size() != 1) {
continue;
}
/* Getting here is a valid AIDL (or so we think) */
if (Utils.descriptorToDot(interfaces.first()).equals(IINTERFACE_CLASS)) {
/* First find the Stub and get a list of transactions */
String stubName = className + ".Stub";
String stubProxyName = className + ".Stub.Proxy";
DexBackedClassDef stubDef = getClassDef(classDefs, stubName);
DexBackedClassDef stubProxyDef = getClassDef(classDefs, stubProxyName);
if (stubDef == null) {
System.err.println("[ERROR] Unable to find Stub for class: "
+ stubName + ", Skiping!");
continue;
}
if (stubProxyDef == null) {
System.err.println("[ERROR] Unable to find Stub.Proxy for class: "
+ stubProxyName + ", Skiping!");
continue;
}
AidlFile aidl = new AidlFile(className, outputDirectory);
/* Next, we need all the transactions for this. */
for (DexBackedField field : stubDef.getStaticFields()) {
if (field.getName().startsWith("TRANSACTION_")) {
String methodName = field.getName().replace("TRANSACTION_", "");
/* Transaction ID for sorting */
EncodedValue iiev = field.getInitialValue();
int transactionId = ((IntEncodedValue) iiev).getValue();
/* Get the Stub.Proxy method (which has return + args) */
DexBackedMethod method = getMethod(stubProxyDef, methodName);
aidl.addMethod(transactionId, methodName, method);
}
}
/* Write it out. */
aidl.writeFile();
}
}
return rtn;
}