/** * Create the class loader for synthetic classes. */ protected void initSynthetic(ClassLoaderReference parent) { ClassLoaderReference synthetic = new ClassLoaderReference(SYNTHETIC, ClassLoaderReference.Java, parent); setLoaderImpl(synthetic, "com.ibm.wala.ipa.summaries.BypassSyntheticClassLoader"); loadersByName.put(SYNTHETIC, synthetic); }
/** * Create the class loader for synthetic classes. */ protected void initSynthetic(ClassLoaderReference parent) { ClassLoaderReference synthetic = new ClassLoaderReference(SYNTHETIC, ClassLoaderReference.Java, parent); setLoaderImpl(synthetic, "com.ibm.wala.ipa.summaries.BypassSyntheticClassLoader"); loadersByName.put(SYNTHETIC, synthetic); }
scope.setLoaderImpl(ClassLoaderReference.Primordial, "com.ibm.wala.dalvik.classLoader.WDexClassLoaderImpl"); scope.setLoaderImpl(ClassLoaderReference.Application, "com.ibm.wala.dalvik.classLoader.WDexClassLoaderImpl");
scope.setLoaderImpl(ClassLoaderReference.Primordial, "com.ibm.wala.dalvik.classLoader.WDexClassLoaderImpl"); scope.setLoaderImpl(ClassLoaderReference.Application, "com.ibm.wala.dalvik.classLoader.WDexClassLoaderImpl");
private static AnalysisScope setUpTestScope(String apkName, String exclusions, ClassLoader loader) throws IOException { AnalysisScope scope; scope = AnalysisScopeReader.readJavaScope("primordial.txt", new File(exclusions), loader); scope.setLoaderImpl(ClassLoaderReference.Application, "com.ibm.wala.dalvik.classLoader.WDexClassLoaderImpl"); addAPKtoScope(ClassLoaderReference.Application, scope, apkName); return scope; }
scope.addToScope(walaLoader, M); } else if ("loaderImpl".equals(entryType)) { scope.setLoaderImpl(walaLoader, entryPathname); } else if ("stdlib".equals(entryType)) { String[] stdlibs = WalaProperties.getJ2SEJarFiles();
scope.addToScope(walaLoader, M); } else if ("loaderImpl".equals(entryType)) { scope.setLoaderImpl(walaLoader, entryPathname); } else if ("stdlib".equals(entryType)) { String[] stdlibs = WalaProperties.getJ2SEJarFiles();
@Test public void testMultiDex() throws ClassHierarchyException, IOException { AnalysisScope scope, scope2; ClassHierarchy cha, cha2; String multidexApk = "data/multidex-test.apk"; scope = AnalysisScopeReader.readJavaScope("primordial.txt", new File(""), MultiDexScopeTest.class.getClassLoader()); scope.setLoaderImpl(ClassLoaderReference.Application, "com.ibm.wala.dalvik.classLoader.WDexClassLoaderImpl"); try { // extract dex files to disk and add them manually to scope File dexTmpDir = new File(System.getProperty("java.io.tmpdir")); extractDexFiles(multidexApk, dexTmpDir); File dex1 = new File(dexTmpDir + File.separator + "classes.dex"); scope.addToScope(ClassLoaderReference.Application, DexFileModule.make(dex1)); dex1.delete(); File dex2 = new File(dexTmpDir + File.separator + "classes2.dex"); scope.addToScope(ClassLoaderReference.Application, DexFileModule.make(dex2)); dex2.delete(); } catch (IOException e) { throw new RuntimeException(e); } cha = ClassHierarchyFactory.make(scope); // use setUpAndroidAnalysisScope scope2 = Util.makeDalvikScope(null,null, multidexApk); cha2 = ClassHierarchyFactory.make(scope2); Assert.assertEquals(Integer.valueOf(getNumberOfAppClasses(cha)),Integer.valueOf(5)); Assert.assertEquals(Integer.valueOf(getNumberOfAppClasses(cha)), Integer.valueOf(getNumberOfAppClasses(cha2))); }