Compartir a través de


Pack200.IPacker Interfaz

Definición

El motor de packer aplica varias transformaciones al archivo JAR de entrada, lo que hace que el flujo del paquete sea altamente comprimible por un compresor como gzip o 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
Atributos
Implementaciones

Comentarios

El motor de packer aplica varias transformaciones al archivo JAR de entrada, lo que hace que el flujo del paquete sea altamente comprimible por un compresor como gzip o zip. Se puede obtener una instancia del motor mediante #newPacker.

El alto grado de compresión se logra mediante una serie de técnicas descritas en la especificación JSR 200. Algunas de las técnicas están ordenando, reordenación y colocalización del grupo de constantes.

El motor de paquetes se inicializa en un estado inicial, tal como se describe en sus propiedades a continuación. El estado inicial se puede manipular obteniendo las propiedades del motor (mediante #properties) y almacenando las propiedades modificadas en el mapa. Los archivos de recursos se pasarán sin cambios en absoluto. Los archivos de clase no contendrán bytes idénticos, ya que el desempaquetador es libre de cambiar las características de archivo de clase secundarias, como el orden del grupo de constantes. Sin embargo, los archivos de clase serán semánticamente idénticos, como se especifica en <la cita>Java™ Especificación</cita> de máquina virtual.

De forma predeterminada, el empaquetador no cambia el orden de los elementos JAR. Además, la sugerencia de tiempo de modificación y deflación de cada elemento JAR se pasa sin cambios. (Se pierde cualquier otra información de archivo ZIP, como atributos adicionales que proporcionan permisos de archivo Unix).

Tenga en cuenta que el empaquetado y desempaquetado de un ARCHIVO JAR modificará generalmente el contenido bytewise de los archivos de clase en el ARCHIVO JAR. Esto significa que el empaquetado y el desempaquetado invalidarán en general las firmas digitales que se basan en imágenes bytewise de elementos JAR. Para firmar y empaquetar un ARCHIVO JAR, primero debe empaquetar y desempaquetar el ARCHIVO JAR para "normalizarlo", luego calcular firmas en los elementos JAR desempaquetados y, por último, volver a empaquetar el ARCHIVO JAR firmado. Ambos pasos de empaquetado deben usar exactamente las mismas opciones, y es posible que el límite de segmento también tenga que establecerse en "-1", para evitar una variación accidental de los límites de segmento a medida que los tamaños de archivo de clase cambian ligeramente.

(Este es el motivo por el que funciona: cualquier reordenamiento que haga el empaquetador de cualquier estructura de archivo de clase es idempotent, por lo que el segundo empaquetado no cambia las ordenaciones producidas por el primer empaquetado. Además, el desempaquetador está garantizado por la especificación JSR 200 para generar una imagen bytewise específica para cualquier ordenación de transmisión dada de los elementos de archivo).

Para mantener la compatibilidad con versiones anteriores, la versión del archivo de paquete se establece para dar cabida a los archivos de clase presentes en el archivo JAR de entrada. En otras palabras, la versión del archivo de paquete será la más reciente, si los archivos de clase son los más recientes y, por el contrario, la versión del archivo de paquete será la más antigua si las versiones de archivo de clase también son las más antiguas. En el caso de las versiones intermedias del archivo de clase, se usará la versión del archivo de paquete correspondiente. Por ejemplo: si los archivos JAR de entrada se componen únicamente de archivos de clase 1.5 (o inferior), se genera un archivo de paquete compatible con 1.5. Esto también será el caso de los archivos que no tienen archivos de clase. Si los archivos JAR de entrada contienen un archivo de clase 1.6, la versión del archivo de paquete se establecerá en 1.6.

Nota: A menos que se indique lo contrario, pasar un null argumento a un constructor o método de esta clase hará que se produzca un NullPointerException .

Agregado en 1.5.

Documentación de Java para java.util.jar.Pack200.Packer.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Campos

ClassAttributePfx

Cuando se concatena con un nombre de atributo de clase, indica el formato de ese atributo, mediante el lenguaje de diseño especificado en la especificación JSR 200.

CodeAttributePfx

Cuando se concatena con un nombre de atributo de código, indica el formato de ese atributo.

DeflateHint

Si esta propiedad se establece #TRUE en o #FALSE, el packer establecerá la sugerencia de deflación en consecuencia en el archivo de salida y no transmitirá las sugerencias de desflación individuales de los elementos de archivo.

Effort

Si esta propiedad se establece en un solo dígito decimal, el empaquetador usará la cantidad de esfuerzo indicada para comprimir el archivo.

Error

Cadena "error", un valor posible para determinadas propiedades.

False

Cadena "false", un valor posible para determinadas propiedades.

FieldAttributePfx

Cuando se concatena con un nombre de atributo de campo, indica el formato de ese atributo.

Keep

Cadena "keep", un valor posible para determinadas propiedades.

KeepFileOrder

Si esta propiedad se establece #TRUEen , el empaquetador transmitirá todos los elementos en su orden original dentro del archivo de origen.

Latest

Cadena "latest", un valor posible para determinadas propiedades.

MethodAttributePfx

Cuando se concatena con un nombre de atributo de método, indica el formato de ese atributo.

ModificationTime

Si esta propiedad se establece en la cadena #LATESTespecial , el packer intentará determinar la hora de modificación más reciente, entre todas las entradas disponibles en el archivo original o la hora de modificación más reciente de todas las entradas disponibles en cada segmento.

Pass

Cadena "pass", un valor posible para determinadas propiedades.

PassFilePfx

Indica que un archivo debe pasarse a través de bytewise, sin compresión.

Progress

El progreso del desempaquetador como porcentaje, tal como lo actualiza periódicamente el desempaquetador.

SegmentLimit

Esta propiedad es un número que proporciona el tamaño de destino estimado N (en bytes) de cada segmento de archivo.

Strip

Cadena "strip", un valor posible para determinadas propiedades.

True

Cadena "true", un valor posible para determinadas propiedades.

UnknownAttribute

Indica la acción que se debe realizar cuando se encuentra un archivo de clase que contiene un atributo desconocido.

Propiedades

Handle

Obtiene el valor JNI del objeto Android subyacente.

(Heredado de IJavaObject)
JniIdentityHashCode

Devuelve el valor de java.lang.System.identityHashCode() para la instancia ajustada.

(Heredado de IJavaPeerable)
JniManagedPeerState

Estado del mismo nivel administrado.

(Heredado de IJavaPeerable)
JniPeerMembers

Compatibilidad con la invocación y el acceso de miembros.

(Heredado de IJavaPeerable)
PeerReference

Devuelve una JniObjectReference de la instancia de objeto Java ajustada.

(Heredado de IJavaPeerable)

Métodos

AddPropertyChangeListener(IPropertyChangeListener)

Registra un agente de escucha para eventos PropertyChange en el mapa de propiedades.

Disposed()

Se llama cuando se ha eliminado la instancia.

(Heredado de IJavaPeerable)
DisposeUnlessReferenced()

Si no hay referencias pendientes a esta instancia, llama a Dispose(); de lo contrario, no hace nada.

(Heredado de IJavaPeerable)
Finalized()

Se llama cuando se ha finalizado la instancia.

(Heredado de IJavaPeerable)
Pack(JarFile, Stream)

Toma un archivo JarFile y lo convierte en un archivo Pack200.

Pack(JarInputStream, Stream)

Toma un archivo JarInputStream y lo convierte en un archivo Pack200.

Properties()

Obtenga el conjunto de propiedades de este motor.

RemovePropertyChangeListener(IPropertyChangeListener)

Quite un agente de escucha para los eventos PropertyChange, agregados por .#addPropertyChangeListener

SetJniIdentityHashCode(Int32)

Establezca el valor devuelto por JniIdentityHashCode.

(Heredado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

El motor de packer aplica varias transformaciones al archivo JAR de entrada, lo que hace que el flujo del paquete sea altamente comprimible por un compresor como gzip o zip.

(Heredado de IJavaPeerable)
SetPeerReference(JniObjectReference)

Establezca el valor devuelto por PeerReference.

(Heredado de IJavaPeerable)
UnregisterFromRuntime()

Anule el registro de esta instancia para que el entorno de ejecución no lo devuelva de invocaciones futuras Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Heredado de IJavaPeerable)

Métodos de extensión

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

El motor de packer aplica varias transformaciones al archivo JAR de entrada, lo que hace que el flujo del paquete sea altamente comprimible por un compresor como gzip o zip.

GetJniTypeName(IJavaPeerable)

El motor de packer aplica varias transformaciones al archivo JAR de entrada, lo que hace que el flujo del paquete sea altamente comprimible por un compresor como gzip o zip.

PackAsync(Pack200+IPacker, JarFile, Stream)

El motor de packer aplica varias transformaciones al archivo JAR de entrada, lo que hace que el flujo del paquete sea altamente comprimible por un compresor como gzip o zip.

PackAsync(Pack200+IPacker, JarInputStream, Stream)

El motor de packer aplica varias transformaciones al archivo JAR de entrada, lo que hace que el flujo del paquete sea altamente comprimible por un compresor como gzip o zip.

Se aplica a