日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DexFile类介绍

發布時間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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異常,一般不會發生。


總結

以上是生活随笔為你收集整理的DexFile类介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。