DexFile类介绍

继承关系

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异常,一般不会发生。
时间: 2024-11-02 17:03:28

DexFile类介绍的相关文章

JSP与JavaMail之2(常用类介绍)

js 3.JavaMail的常用类介绍  事先说明:  没用过JavaMail的人可能看不懂这些介绍,不过不要紧,后面的文章有具体的实例,到时也可倒回来查看这些类的用法.  (1) javax.mail.Properties类  JavaMail需要Properties来创建一个session对象.它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机.  用法:  Properties props = new Properties ();  props.put(&q

【spring框架】beans.xml规范与ClassPathXmlApplicationContext类介绍

1.beans.xml规范: (由于以后用到其他标签会添加很多规范,这里只给出基础的规范) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sche

CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)

前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上网的机子(两台笔记本+一台台式机),下载资料还得用公司的U盘再转到自己电脑,这种半封闭的环境,相当的让人不适应,有种欲仰天吐血的感觉. 这一周我都向三个带总的领导反映了上网问题,不过没啥响应,估计是没戏. 于是我只有把其中一台能上网的笔记本拿到自己桌子上去独自占用了,勉强也能上下网了,不过基于安全问

thinkphp 分页类介绍

thinkphp 中的分页类在我看来还是很强大的,使用起来也是很方便的.只要传总的条数,和每页显示的条数,还有样式配置数组,你就可以轻松显示分页,而且可以方便的调整前台页数代码的样式. 下面介绍一下一些配置参数: public $firstRow; // 起始行数 public $listRows; // 列表每页显示行数 public $parameter; // 分页跳转时要带的参数 public $totalRows; // 总行数 public $totalPages; // 分页总页面

android 系统层 常用类介绍

类名 功能介绍 示意图 surfacemanager为应用程序显示2d和3d程序无缝结合 mediaFramework 基于packetvideocore 该库支持常见视频图片格式的回放和录放譬如mp3,jpg等等 sqlite 对任何程序功能强劲的关系型数据库 open el es 该库用于3d硬件加速或者高度优化的3d软加速(类似于windows上directx库) sgl 2d渲染引擎google以skia为核心的渲染引擎 freetype 位图 矢量图的显示 webkit z最新的web

C++ QVector 类介绍及内存分配策略

QVector 介绍 QVector类是一个提供动态数组的模板类. QVector<T>是Qt普通容器类的一种.它将自己的每一个对象存储在连续的内存中,可以使用索引号来快速访问它们.QList<T>.QLinkedList<T>和 QVarLengthArray<T>也提供了相似的功能,它们使用方法如下: l QList一般用得最多,它能满足我们绝大部分需求.像prepend()和insert()这样的操作通常比QVector要快些,这是由于QList存储它

WPF Application 类介绍以及怎样修改启动方式

      因为想要修改wpf的启动方式,所以研究了下Application类,现把一些有用的属性与大家分享下: 属性: Current                  获取当前 AppDomain的 Application 对象 MainWindow           获取或设置应用程序的主窗体.(下面详细介绍) Resources              获取或设置应用程序范围资源的集合,例如样式和画笔. ShutdownMode       获取或设置会导致Shutdown方法调用的

JBuilder 2005单元测试之业务类介绍

为了便于讲解,拟通过两个简单的业务类引出测试用例,一个是分段函数类,另一个是字符串处理类,在这节里我们先来熟悉这两个业务类. 分段函数类 分段函数Subsection类有两个函数,sign()是一个符号函数,而getValue(int d)函数功能如下: 当d < -2时,值为abs(d): 当-2≤d<2 且d!=0时,值为d*d: 当d=0时,值为100: 当2≤d时,值为d*d*d. 其代码如下图所示: 代码清单 错误!文档中没有指定样式的文字.分段函数 1. package chapt

CoCoa编程中视图控制器与视图类介绍

UITabBarController类 选项卡类允许用户在多个视图控制器之间移动并在屏幕的底部可定制该栏.向不同的视图同时提供一次单击访问,向用户选择的屏幕和编辑底栏的屏幕同时提供More按钮. 选项卡类的方便之处就是 不需要象导航栏那样以栈的方式推入和弹出视图的操作,而是组建一系列的控制器(它们各自可以是UIViewController.UINavigationController.UITableViewController或其他任何类型的视图控制器),并通过设置栏的viewControlle