Pack200.IPacker 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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.Packer
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
欄位
ClassAttributePfx |
與類別屬性名稱串連時,會使用 JSR 200 規格中指定的版面配置語言,指出該屬性的格式。 |
CodeAttributePfx |
與程式代碼屬性名稱串連時,表示該屬性的格式。 |
DeflateHint |
如果此屬性設定為 |
Effort |
如果此屬性設定為單一十進位數,包裝工具會使用指定的壓縮封存工作量。 |
Error |
字串 “error”,這是特定屬性的可能值。 |
False |
字串 “false”,這是特定屬性的可能值。 |
FieldAttributePfx |
與功能變數名稱串連時,表示該屬性的格式。 |
Keep |
字串串 “keep”,這是特定屬性的可能值。 |
KeepFileOrder |
如果這個屬性設定為 |
Latest |
字串 “latest”,這是特定屬性的可能值。 |
MethodAttributePfx |
與方法屬性名稱串連時,表示該屬性的格式。 |
ModificationTime |
如果此屬性設定為特殊字串 |
Pass |
字串 “pass”,這是特定屬性的可能值。 |
PassFilePfx |
表示檔案應該以位元組方式傳遞,且沒有壓縮。 |
Progress |
解壓縮工具的進度會以百分比表示,如解壓縮工具定期更新。 |
SegmentLimit |
此屬性是一個數位,提供每個封存區段的估計目標大小 N (以位元組為單位)。 |
Strip |
字串 “strip”,這是特定屬性的可能值。 |
True |
字串 “true”,這是特定屬性的可能值。 |
UnknownAttribute |
指出遇到包含未知屬性的類別檔案時要採取的動作。 |
屬性
Handle |
取得基礎 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
JniIdentityHashCode |
傳回包裝實例的 值 |
JniManagedPeerState |
受控對等的狀態。 (繼承來源 IJavaPeerable) |
JniPeerMembers |
成員存取和調用支援。 (繼承來源 IJavaPeerable) |
PeerReference |
傳 JniObjectReference 回已包裝 Java 物件實例的 。 (繼承來源 IJavaPeerable) |
方法
AddPropertyChangeListener(IPropertyChangeListener) |
在屬性對應上註冊 PropertyChange 事件的接聽程式。 |
Disposed() |
處置實例時呼叫。 (繼承來源 IJavaPeerable) |
DisposeUnlessReferenced() |
如果這個實例沒有未完成的參考,則呼叫 |
Finalized() |
實例完成時呼叫。 (繼承來源 IJavaPeerable) |
Pack(JarFile, Stream) |
採用 JarFile,並將它轉換成 Pack200 封存盤。 |
Pack(JarInputStream, Stream) |
採用 JarInputStream,並將它轉換成 Pack200 封存。 |
Properties() |
取得此引擎屬性的集合。 |
RemovePropertyChangeListener(IPropertyChangeListener) |
移除 由 新增 |
SetJniIdentityHashCode(Int32) |
設定所 |
SetJniManagedPeerState(JniManagedPeerStates) |
Packer 引擎會將各種轉換套用至輸入 JAR 檔案,讓套件串流由壓縮器高度壓縮,例如 gzip 或 zip。 (繼承來源 IJavaPeerable) |
SetPeerReference(JniObjectReference) |
設定所 |
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。 |