- android
- android.accessibilityservice
- android.accounts
- android.content
- android.database.sqlite
- android.graphics
- android.location
- android.media
- android.net
- android.os
- android.text
- android.view
- android.view.inputmethod
- android.widget
- AbsListView
- AbsoluteLayout
- AbsSeekBar
- AbsSpinner
- AdapterView
- AnalogClock
- BaseAdapter
- BaseExpandableListAdapter
- Button
- CheckBox
- CheckedTextView
- Checkable
- Chronometer
- CompoundButton
- CursorAdapter
- CursorTreeAdapter
- DatePicker
- DialerFilter
- DigitalClock
- EditText
- Filter
- Filter.FilterListener
- Filter.FilterResults
- ExpandableListAdapter
- Filterable
- Gallery
- Gallery.LayoutParams
- GridView
- GridLayout
- RadioGroup
- ImageView
- HorizontalScrollView
- ImageButton
- ImageSwitcher
- FilterQueryProvider
- ListAdapter
- ListView
- MediaController
- QuickContactBadge
- RadioButton
- RatingBar
- RelativeLayout
- RemoteViews
- ResourceCursorAdapter
- ResourceCursorTreeAdapter
- Scroller
- ScrollView
- SearchView
- SeekBar
- SeekBar.OnSeekBarChangeListener
- SimpleAdapter
- SimpleCursorAdapter
- SimpleCursorTreeAdapter
- SimpleExpandableListAdapter
- SlidingDrawer
- Spinner
- SpinnerAdapter
- WrapperListAdapter
- TabHost
- TabHost.TabSpec
- TextView
- TimePicker
- Toast
- TableLayout
- TableRow
- TableRow.LayoutParams
- TabWidget
- TextSwitcher
- ToggleButton
- TwoLineListItem
- VideoView
- ViewAnimator
- ViewFlipper
- ViewSwitcher
- ZoomButtonsController
- ZoomButton
- ZoomControls
- dalvik.system
DexFile
DexFile
版本:Android 4.0 r1
结构
继承关系
public final class DexFile extends Object
java.lang.Object
dalvik.system.DexFile
类概述
操作 DEX 文件。这个类原理上和 ZipFile 相似。主要在类装载器里被使用。
注意,我们不直接打开和读取 DEX 文件。它们被虚拟机以只读方式映射到内存了。
构造函数
public DexFile (File file)
通过指定的 File 对象打开 DEX 文件。指定的文件通常是一个 ZIP/JAR 文件,里面包含一个”classes.dex”。虚拟机将在目录/data/dalvik-cache 下生成对应的文件名字并打开它,如果系统权限允许的话会首先创建或更新它。不要传目录/data/dalvik-cache 下的文件名给它,因为这个文件被认为处于初始状态(DEX 被优化之前)。
参数
File 引用实际 DEX 文件的 File 对象
异常
IOException 发生 I/O 异常,例如文件不存在或者没有权限访问。
public DexFile (String fileName)
打开指定文件名的 DEX 文件。指定的文件通常是一个 ZIP/JAR 文件,里面包含一个”classes.dex”。虚拟机将在目录/data/dalvik-cache 下生成对应的文件名字并打开它,如果系统权限允许的话会首先创建或更新它。不要传目录/data/dalvik-cache 下的文件名给它,因为这个文件被认为处于初始状态(DEX 被优化之前)。
参数
fileName DEX 文件名。
异常
IOException 发生 I/O 异常,例如文件不存在或者没有权限访问。
公共方法
public void close ()
关闭 DEX 文件。
有可能无法释放任何资源。如果来自 DEX 文件的类还存活着的话,DEX 文件不能被取消映射。
异常
IOException 在关闭文件的过程中可能发生 I/O 异常,一般不会发生。
public Enumeration<String> entries ()
枚举 DEX 文件里面的类名。
返回值
DEX 文件所包含类名的枚举,类名的类型是一般内部格式(像 java/lang/String)。
public String getName ()
获取(已打开)DEX 文件名。
返回值
文件名
public static boolean isDexOptNeeded (String fileName)
如果虚拟机认为 apk/jar 文件已经过期返回 true,并且应该再次通过”dexopt”传递。(译者注:dexopt 是 apk 优化工具)
参数
fileName 被检查 apk/jar 文件的绝对路径名。
返回值
如果应该调用 dexopt 处理文件返回 true;否则 false。
异常
FileNotFoundException 文件不可读、不是一个文件或者文件不存在。
IOException fileName 不是有效的 apk/jar 文件,或者在解析文件时出现问题。
NullPointerException fileName 是空的。
StaleDexCacheError 优化过的 DEX 文件已过期且位于只读分区。
public Class loadClass (String name, ClassLoader loader)
装载一个类。返回成功装载的类,失败返回空。
如果在类装载器之外调用它,往往不会得到你想要的结果,这时请使用 forName(String)。
该方法不会在找不到类的时候抛出 ClassNotFoundException 异常,因为每次在我们看到的第一个 DEX 文件里找不到类就粗暴地抛出异常是不合理的。
参数
name 类名,应该是一个"java/lang/String"
loader 试图装载类的类装载器(大多数情况下就是该方法的调用者)
返回值
类名对应的对象,装载失败时返回空。
public static DexFile loadDex (String sourcePathName, String outputPathName, int flags)
打开一个 DEX 文件,并提供一个文件来保存优化过的 DEX 数据。如果优化过的格式已存在并且是最新的,就直接使用它。如果不是,虚拟机将试图重新创建一个。该方法主要用于应用希望在通常的应用安装机制之外下载和执行 DEX 文件。不能在应用里直接调用该方法,而应该通过一个类装载器例如 dalvik.system.DexClassLoader.
参数
sourcePathName 包含”classes.dex”的 Jar 或者 APK 文件。(将来可能会扩展支持"raw DEX"。)
outputPathName 保存优化过的 DEX 数据的文件。
flags 打开可选功能(目前什么也没定义)
返回值
一个新的,或者先前已经打开的 DexFile。
异常
IOException 无法打开输入或输出文件。
受保护方法
protected void finalize ()
类结束时调用。确保 DEX 文件被关闭。
异常
IOException 关闭文件时发生 I/O 异常,一般不会发生。
补充
文章精选
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论