コード例 #1
0
    public synchronized void maybeInit() {
      if (initialized) {
        return;
      }

      initialized = true;

      if (isDirectory || zip == null) {
        return;
      }

      try {
        zipFile = new ZipFile(zip);
        urlHandler = new ElementURLStreamHandler(zipFile);
      } catch (IOException ioe) {
        /*
         * Note: ZipException (a subclass of IOException)
         * might get thrown by the ZipFile constructor
         * (e.g. if the file isn't actually a zip/jar
         * file).
         */
        System.logE("Unable to open zip file: " + file, ioe);
        zipFile = null;
      }
    }
コード例 #2
0
  /** Makes an array of dex/resource path elements, one per element of the given array. */
  private static Element[] makeDexElements(
      List<File> files, File optimizedDirectory, List<IOException> suppressedExceptions) {
    ArrayList<Element> elements = new ArrayList<Element>();
    /*
     * Open all files and load the (direct or contained) dex files
     * up front.
     */
    for (File file : files) {
      File zip = null;
      DexFile dex = null;
      String name = file.getName();

      if (file.isDirectory()) {
        // We support directories for looking up resources.
        // This is only useful for running libcore tests.
        elements.add(new Element(file, true, null, null));
      } else if (file.isFile()) {
        if (name.endsWith(DEX_SUFFIX)) {
          // Raw dex file (not inside a zip/jar).
          try {
            dex = loadDexFile(file, optimizedDirectory);
          } catch (IOException ex) {
            System.logE("Unable to load dex file: " + file, ex);
          }
        } else {
          zip = file;

          try {
            dex = loadDexFile(file, optimizedDirectory);
          } catch (IOException suppressed) {
            /*
             * IOException might get thrown "legitimately" by the DexFile constructor if
             * the zip file turns out to be resource-only (that is, no classes.dex file
             * in it).
             * Let dex == null and hang on to the exception to add to the tea-leaves for
             * when findClass returns null.
             */
            suppressedExceptions.add(suppressed);
          }
        }
      } else {
        System.logW("ClassLoader referenced unknown path: " + file);
      }

      if ((zip != null) || (dex != null)) {
        elements.add(new Element(file, false, zip, dex));
      }
    }

    return elements.toArray(new Element[elements.size()]);
  }
コード例 #3
0
ファイル: Security.java プロジェクト: FENGRaymond/android-sdk
 // static initialization
 // - load security properties files
 // - load statically registered providers
 // - if no provider description file found then load default providers
 static {
   boolean loaded = false;
   try {
     InputStream configStream = Security.class.getResourceAsStream("security.properties");
     InputStream input = new BufferedInputStream(configStream);
     secprops.load(input);
     loaded = true;
     configStream.close();
   } catch (Exception ex) {
     System.logE("Could not load 'security.properties'", ex);
   }
   if (!loaded) {
     registerDefaultProviders();
   }
   Engine.door = new SecurityDoor();
 }