Home | History | Annotate | Download | only in system
      1 /*
      2  * Copyright (C) 2008 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package dalvik.system;
     18 
     19 import java.io.File;
     20 
     21 /**
     22  * A class loader that loads classes from {@code .jar} and {@code .apk} files
     23  * containing a {@code classes.dex} entry. This can be used to execute code not
     24  * installed as part of an application.
     25  *
     26  * <p>This class loader requires an application-private, writable directory to
     27  * cache optimized classes. Use {@code Context.getCodeCacheDir()} to create
     28  * such a directory: <pre>   {@code
     29  *   File dexOutputDir = context.getCodeCacheDir();
     30  * }</pre>
     31  *
     32  * <p><strong>Do not cache optimized classes on external storage.</strong>
     33  * External storage does not provide access controls necessary to protect your
     34  * application from code injection attacks.
     35  */
     36 public class DexClassLoader extends BaseDexClassLoader {
     37     /**
     38      * Creates a {@code DexClassLoader} that finds interpreted and native
     39      * code.  Interpreted classes are found in a set of DEX files contained
     40      * in Jar or APK files.
     41      *
     42      * <p>The path lists are separated using the character specified by the
     43      * {@code path.separator} system property, which defaults to {@code :}.
     44      *
     45      * @param dexPath the list of jar/apk files containing classes and
     46      *     resources, delimited by {@code File.pathSeparator}, which
     47      *     defaults to {@code ":"} on Android
     48      * @param optimizedDirectory directory where optimized dex files
     49      *     should be written; must not be {@code null}
     50      * @param librarySearchPath the list of directories containing native
     51      *     libraries, delimited by {@code File.pathSeparator}; may be
     52      *     {@code null}
     53      * @param parent the parent class loader
     54      */
     55     public DexClassLoader(String dexPath, String optimizedDirectory,
     56             String librarySearchPath, ClassLoader parent) {
     57         super(dexPath, new File(optimizedDirectory), librarySearchPath, parent);
     58     }
     59 }
     60