Pack200.IPacker 接口

定义

打包器引擎将各种转换应用于输入 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
属性
实现

注解

打包器引擎将各种转换应用于输入 JAR 文件,使包流由压缩器(如 gzip 或 zip)高度压缩。 可以使用 获取 #newPacker引擎的实例。

通过使用 JSR 200 规范中所述的多种技术来实现高度压缩。 其中一些技术是对常量池进行排序、重新排序和共同定位。

包引擎初始化为初始状态,如下所示。 可以通过获取引擎属性(using #properties)并将修改的属性存储在地图上来操作初始状态。 将传递资源文件,没有任何更改。 类文件不包含相同的字节,因为解压缩程序可以自由更改次要类文件功能,如常量池顺序。 但是,类文件在语义上是相同的,如引用>Java™ 中指定的<一样;虚拟机规范</引用>。

默认情况下,包装器不会更改 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)

删除 PropertyChange 事件的侦听器,该侦听器由 #addPropertyChangeListener..

SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

打包器引擎将各种转换应用于输入 JAR 文件,使包流由压缩器(如 gzip 或 zip)高度压缩。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
UnregisterFromRuntime()

取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

打包器引擎将各种转换应用于输入 JAR 文件,使包流由压缩器(如 gzip 或 zip)高度压缩。

GetJniTypeName(IJavaPeerable)

打包器引擎将各种转换应用于输入 JAR 文件,使包流由压缩器(如 gzip 或 zip)高度压缩。

PackAsync(Pack200+IPacker, JarFile, Stream)

打包器引擎将各种转换应用于输入 JAR 文件,使包流由压缩器(如 gzip 或 zip)高度压缩。

PackAsync(Pack200+IPacker, JarInputStream, Stream)

打包器引擎将各种转换应用于输入 JAR 文件,使包流由压缩器(如 gzip 或 zip)高度压缩。

适用于