共用方式為


Pack200.IPacker 介面

定義

Packer 引擎會將各種轉換套用至輸入 JAR 檔案,讓套件串流由壓縮器高度壓縮,例如 gzip 或 zip。

[Android.Runtime.Register("java/util/jar/Pack200$Packer", "", "Java.Util.Jar.Pack200/IPackerInvoker")]
public interface Pack200.IPacker : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/jar/Pack200$Packer", "", "Java.Util.Jar.Pack200/IPackerInvoker")>]
type Pack200.IPacker = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
屬性
實作

備註

Packer 引擎會將各種轉換套用至輸入 JAR 檔案,讓套件串流由壓縮器高度壓縮,例如 gzip 或 zip。 您可以使用 取得 #newPacker引擎的實例。

使用 JSR 200 規格中所述的一些技術來達到高度壓縮。 其中一些技術是排序、重新排序和常數集區的共同位置。

套件引擎會初始化為初始狀態,如下所述。 藉由取得引擎屬性(使用 #properties)並將修改的屬性儲存在地圖上,即可操作初始狀態。 資源檔將會通過,完全不會有任何變更。 類別檔案不會包含相同的位元組,因為解壓縮程式可以自由變更次要類別檔案功能,例如常數集區順序。 不過,類別檔案在語意上會相同,如引用>Java&trade 中所<指定:虛擬機規格</引用>。

根據預設,Packer 不會變更 JAR 元素的順序。 此外,每個 JAR 元素的修改時間和通貨緊縮提示都會保持不變傳遞。 (任何其他 ZIP 封存資訊,例如提供 Unix 檔案許可權的額外屬性,都將遺失。

請注意,封裝和解壓縮 JAR 通常會改變 JAR 中類別檔案的位元組內容。 這表示封裝和解壓縮通常會使依賴 JAR 元素位元組映像的任何數位簽名失效。 若要簽署和封裝 JAR,您必須先封裝並解壓縮 JAR 以「正規化」,然後在解壓縮的 JAR 元素上計算簽章,最後重新封裝已簽署的 JAR。 這兩個封裝步驟都應該使用相同的選項,而且區段限制可能也需要設定為 “-1”,以避免因為類別檔案大小略有變更而發生區段界限的意外變化。

(原因如下:任何重新排序包裝器對任何類別文件結構的排序都是等冪的,因此第二個封裝不會變更第一個封裝所產生的順序。此外,JSR 200 規格可保證解除封裝器會針對封存元素的任何指定傳輸順序產生特定的位元組影像。

為了維持回溯相容性,套件檔案的版本會設定為容納輸入 JAR 檔案中存在的類別檔案。 換句話說,如果類別檔案是最新的,則套件檔案版本會是最新的,相反地,如果類別檔案版本也是最舊的,則套件檔案版本會是最舊的。 針對中繼類別檔案版本,將會使用對應的套件檔案版本。 例如:如果輸入 JAR 檔案只包含 1.5(或更少)類別檔案,則會產生 1.5 相容的套件檔案。 對於沒有類別檔案的封存而言,這也是這種情況。 如果輸入 JAR 檔案包含 1.6 類別檔案,則套件檔案版本會設定為 1.6。

注意:除非另有說明,否則將自變數傳遞 null 至這個類別中的建構函式或方法會導致 NullPointerException 擲回 。

已在1.5中新增。

java.util.jar.Pack200.PackerJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

欄位

ClassAttributePfx

與類別屬性名稱串連時,會使用 JSR 200 規格中指定的版面配置語言,指出該屬性的格式。

CodeAttributePfx

與程式代碼屬性名稱串連時,表示該屬性的格式。

DeflateHint

如果此屬性設定為 #TRUE#FALSE,包裝器會在輸出封存中據此設定通貨緊縮提示,而且不會傳輸封存元素的個別通貨緊縮提示。

Effort

如果此屬性設定為單一十進位數,包裝工具會使用指定的壓縮封存工作量。

Error

字串 “error”,這是特定屬性的可能值。

False

字串 “false”,這是特定屬性的可能值。

FieldAttributePfx

與功能變數名稱串連時,表示該屬性的格式。

Keep

字串串 “keep”,這是特定屬性的可能值。

KeepFileOrder

如果這個屬性設定為 #TRUE,封裝器將會以原始順序在來源封存內傳輸所有專案。

Latest

字串 “latest”,這是特定屬性的可能值。

MethodAttributePfx

與方法屬性名稱串連時,表示該屬性的格式。

ModificationTime

如果此屬性設定為特殊字串 #LATEST,包裝器會嘗試判斷原始封存中所有可用專案之間的最新修改時間,或每個區段中所有可用專案的最新修改時間。

Pass

字串 “pass”,這是特定屬性的可能值。

PassFilePfx

表示檔案應該以位元組方式傳遞,且沒有壓縮。

Progress

解壓縮工具的進度會以百分比表示,如解壓縮工具定期更新。

SegmentLimit

此屬性是一個數位,提供每個封存區段的估計目標大小 N (以位元組為單位)。

Strip

字串 “strip”,這是特定屬性的可能值。

True

字串 “true”,這是特定屬性的可能值。

UnknownAttribute

指出遇到包含未知屬性的類別檔案時要採取的動作。

屬性

Handle

取得基礎 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
JniIdentityHashCode

傳回包裝實例的 值 java.lang.System.identityHashCode()

(繼承來源 IJavaPeerable)
JniManagedPeerState

受控對等的狀態。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取和調用支援。

(繼承來源 IJavaPeerable)
PeerReference

JniObjectReference 回已包裝 Java 物件實例的 。

(繼承來源 IJavaPeerable)

方法

AddPropertyChangeListener(IPropertyChangeListener)

在屬性對應上註冊 PropertyChange 事件的接聽程式。

Disposed()

處置實例時呼叫。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果這個實例沒有未完成的參考,則呼叫 Dispose(),否則不會執行任何動作。

(繼承來源 IJavaPeerable)
Finalized()

實例完成時呼叫。

(繼承來源 IJavaPeerable)
Pack(JarFile, Stream)

採用 JarFile,並將它轉換成 Pack200 封存盤。

Pack(JarInputStream, Stream)

採用 JarInputStream,並將它轉換成 Pack200 封存。

Properties()

取得此引擎屬性的集合。

RemovePropertyChangeListener(IPropertyChangeListener)

移除 由 新增 #addPropertyChangeListener之 PropertyChange 事件的接聽程式。

SetJniIdentityHashCode(Int32)

設定所 JniIdentityHashCode傳回的值。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Packer 引擎會將各種轉換套用至輸入 JAR 檔案,讓套件串流由壓縮器高度壓縮,例如 gzip 或 zip。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

設定所 PeerReference傳回的值。

(繼承來源 IJavaPeerable)
UnregisterFromRuntime()

取消註冊此實例,讓運行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。

(繼承來源 IJavaPeerable)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

Packer 引擎會將各種轉換套用至輸入 JAR 檔案,讓套件串流由壓縮器高度壓縮,例如 gzip 或 zip。

GetJniTypeName(IJavaPeerable)

Packer 引擎會將各種轉換套用至輸入 JAR 檔案,讓套件串流由壓縮器高度壓縮,例如 gzip 或 zip。

PackAsync(Pack200+IPacker, JarFile, Stream)

Packer 引擎會將各種轉換套用至輸入 JAR 檔案,讓套件串流由壓縮器高度壓縮,例如 gzip 或 zip。

PackAsync(Pack200+IPacker, JarInputStream, Stream)

Packer 引擎會將各種轉換套用至輸入 JAR 檔案,讓套件串流由壓縮器高度壓縮,例如 gzip 或 zip。

適用於