Share via


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&交易中所<指定;虛擬機規格</引用>。

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

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

(以下是運作的原因:任何重新排序封裝器會執行任何 classfile 結構的等冪性,因此第二個封裝不會變更第一個封裝所產生的排序。此外,JSR 200 規格可保證解除封裝器會針對封存元素的任何指定傳輸順序產生特定的位元組映像。)

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

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

在 1.5 中新增。

java.util.jar.Pack200.PackerJava 檔。

此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據 中所述的詞彙使用。

欄位

ClassAttributePfx

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

CodeAttributePfx

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

DeflateHint

如果這個屬性設定為 #TRUE#FALSE,則packer會在輸出封存中據以設定變值提示,而且不會傳輸封存專案的個別變化提示。

Effort

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

Error

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

False

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

FieldAttributePfx

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

Keep

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

KeepFileOrder

如果此屬性設定 #TRUE為 ,則套件工具會以原始順序在來源封存內傳輸所有元素。

Latest

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

MethodAttributePfx

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

ModificationTime

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

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)

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

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 等壓縮器高度壓縮。

適用於