soot
soot copied to clipboard
Default classpath for android not considering src_prec_apk_class_jimple
In src\main\java\soot\Scene.java Scene.defaultClassPath, the if statement doesn't consider the case for Options.src_prec_apk_class_jimple. So when I set it to Options.src_prec_apk_class_jimple, it seems that I always get a phantom class for android framework related classes. eg: android.content.Context.
Related source code in src\main\java\soot\Scene.java:
public String defaultClassPath() {
if (Options.v().src_prec() != Options.src_prec_apk) { // here
// If we have an apk file on the process dir and do not have a src-prec
// option that loads APK files, we give a warning
for (String entry : Options.v().process_dir()) {
if (entry.toLowerCase().endsWith(".apk")) {
System.err.println("APK file on process dir, but chosen src-prec does not support loading APKs");
break;
}
}
String path = defaultJavaClassPath();
if (path == null) {
throw new RuntimeException("Error: cannot find rt.jar.");
}
return path;
} else {
return defaultAndroidClassPath();
}
}