Compartilhar via


Pack200.IPacker Interface

Definição

O mecanismo de empacotamento aplica várias transformações ao arquivo JAR de entrada, tornando o fluxo de pacote altamente compressível por um compressor como gzip ou 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
Implementações

Comentários

O mecanismo de empacotamento aplica várias transformações ao arquivo JAR de entrada, tornando o fluxo de pacote altamente compressível por um compressor como gzip ou zip. Uma instância do mecanismo pode ser obtida usando #newPackero .

O alto grau de compressão é obtido usando uma série de técnicas descritas na especificação JSR 200. Algumas das técnicas são a triagem, a reordenação e a co-localização da piscina constante.

O mecanismo de pacote é inicializado para um estado inicial, conforme descrito por suas propriedades abaixo. O estado inicial pode ser manipulado obtendo as propriedades do mecanismo (usando #properties) e armazenando as propriedades modificadas no mapa. Os arquivos de recursos serão passados sem nenhuma alteração. Os arquivos de classe não conterão bytes idênticos, já que o descompactador está livre para alterar recursos de arquivo de classe secundária, como ordem constante do pool. No entanto, os arquivos de classe serão semanticamente idênticos, conforme especificado em <cite>The Java™ Especificação</citação> de máquina virtual.

Por padrão, o empacotador não altera a ordem dos elementos JAR. Além disso, o tempo de modificação e a dica de deflação de cada elemento JAR são passados inalterados. (Quaisquer outras informações de arquivo ZIP, como atributos extras que dão permissões ao arquivo Unix, são perdidas.)

Observe que empacotar e descompactar um JAR geralmente altera o conteúdo em byte dos arquivos de classe no JAR. Isso significa que empacotar e descompactar geralmente invalidará quaisquer assinaturas digitais que dependam de imagens bytewise de elementos JAR. Para assinar e empacotar um JAR, você deve primeiro empacotar e descompactar o JAR para "normalizá-lo", depois computar assinaturas nos elementos JAR descompactados e, finalmente, reempacotar o JAR assinado. Ambas as etapas de embalagem devem usar precisamente as mesmas opções, e o limite de segmento também pode precisar ser definido como "-1", para evitar a variação acidental dos limites de segmento à medida que os tamanhos dos arquivos de classe mudam ligeiramente.

(Veja por que isso funciona: Qualquer reordenação que o empacotador faz de qualquer estrutura de arquivo de classe é idempotente, portanto, a segunda embalagem não altera os pedidos produzidos pela primeira embalagem. Além disso, o descompactador é garantido pela especificação JSR 200 para produzir uma imagem bytewise específica para qualquer ordem de transmissão de elementos de arquivo.)

Para manter a compatibilidade com versões anteriores, a versão do arquivo pack é definida para acomodar os arquivos de classe presentes no arquivo JAR de entrada. Em outras palavras, a versão do arquivo pack será a mais recente, se os arquivos de classe forem os mais recentes e, inversamente, a versão do arquivo pack será a mais antiga se as versões do arquivo de classe também forem as mais antigas. Para versões de arquivo de classe intermediária, a versão do arquivo de pacote correspondente será usada. Por exemplo: Se os arquivos JAR de entrada forem compostos exclusivamente por arquivos de classe 1.5 (ou inferior), um arquivo de pacote compatível com 1.5 será produzido. Esse também será o caso de arquivos que não têm arquivos de classe. Se os arquivos JAR de entrada contiverem um arquivo de classe 1.6, a versão do arquivo do pacote será definida como 1.6.

Nota: Salvo indicação em contrário, passar um null argumento para um construtor ou método nesta classe fará com que um NullPointerException seja lançado.

Adicionado em 1.5.

Documentação Java para java.util.jar.Pack200.Packer.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Campos

ClassAttributePfx

Quando concatenado com um nome de atributo de classe, indica o formato desse atributo, usando a linguagem de layout especificada na especificação JSR 200.

CodeAttributePfx

Quando concatenado com um nome de atributo de código, indica o formato desse atributo.

DeflateHint

Se essa propriedade for definida como #TRUE ou #FALSE, o empacotador definirá a dica de deflação de acordo com o arquivo de saída e não transmitirá as dicas de deflação individuais dos elementos de arquivo.

Effort

Se essa propriedade for definida como um único dígito decimal, o empacotador usará a quantidade indicada de esforço na compactação do arquivo.

Error

A cadeia de caracteres "error", um valor possível para determinadas propriedades.

False

A cadeia de caracteres "false", um valor possível para determinadas propriedades.

FieldAttributePfx

Quando concatenado com um nome de atributo de campo, indica o formato desse atributo.

Keep

A cadeia de caracteres "keep", um valor possível para determinadas propriedades.

KeepFileOrder

Se essa propriedade for definida como #TRUE, o empacotador transmitirá todos os elementos em sua ordem original dentro do arquivo de origem.

Latest

A cadeia de caracteres "mais recente", um valor possível para determinadas propriedades.

MethodAttributePfx

Quando concatenado com um nome de atributo de método, indica o formato desse atributo.

ModificationTime

Se essa propriedade for definida como a cadeia de caracteres #LATESTespecial, o empacotador tentará determinar a hora da última modificação, entre todas as entradas disponíveis no arquivo original ou a hora da modificação mais recente de todas as entradas disponíveis em cada segmento.

Pass

A cadeia de caracteres "pass", um valor possível para determinadas propriedades.

PassFilePfx

Indica que um arquivo deve ser passado por bytes, sem compactação.

Progress

O progresso do descompactador como uma porcentagem, conforme atualizado periodicamente pelo descompactador.

SegmentLimit

Essa propriedade é um numeral que fornece o tamanho de destino estimado N (em bytes) de cada segmento de arquivamento.

Strip

A cadeia de caracteres "strip", um valor possível para determinadas propriedades.

True

A cadeia de caracteres "true", um valor possível para determinadas propriedades.

UnknownAttribute

Indica a ação a ser executada quando um arquivo de classe que contém um atributo desconhecido é encontrado.

Propriedades

Handle

Obtém o valor JNI do objeto Android subjacente.

(Herdado de IJavaObject)
JniIdentityHashCode

Retorna o valor de java.lang.System.identityHashCode() para a instância encapsulada.

(Herdado de IJavaPeerable)
JniManagedPeerState

Estado do par gerenciado.

(Herdado de IJavaPeerable)
JniPeerMembers

Acesso de membros e suporte à invocação.

(Herdado de IJavaPeerable)
PeerReference

Retorna uma JniObjectReference das instâncias do objeto Java encapsulado.

(Herdado de IJavaPeerable)

Métodos

AddPropertyChangeListener(IPropertyChangeListener)

Registra um ouvinte para eventos PropertyChange no mapa de propriedades.

Disposed()

Chamado quando a instância tiver sido descartada.

(Herdado de IJavaPeerable)
DisposeUnlessReferenced()

Se não houver referências pendentes a este caso, então chame Dispose(), caso contrário, não faz nada.

(Herdado de IJavaPeerable)
Finalized()

Chamado quando a instância tiver sido finalizada.

(Herdado de IJavaPeerable)
Pack(JarFile, Stream)

Pega um JarFile e o converte em um arquivo Pack200.

Pack(JarInputStream, Stream)

Pega um JarInputStream e o converte em um arquivo Pack200.

Properties()

Obtenha o conjunto de propriedades deste mecanismo.

RemovePropertyChangeListener(IPropertyChangeListener)

Remova um ouvinte para eventos PropertyChange, adicionados pelo #addPropertyChangeListener.

SetJniIdentityHashCode(Int32)

Defina o valor retornado por JniIdentityHashCode.

(Herdado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

O mecanismo de empacotamento aplica várias transformações ao arquivo JAR de entrada, tornando o fluxo de pacote altamente compressível por um compressor como gzip ou zip.

(Herdado de IJavaPeerable)
SetPeerReference(JniObjectReference)

Defina o valor retornado por PeerReference.

(Herdado de IJavaPeerable)
UnregisterFromRuntime()

Cancele o registro dessa instância para que o tempo de execução não a retorne de chamadas futuras Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Herdado de IJavaPeerable)

Métodos de Extensão

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo verificada em tempo de execução do Android.

JavaCast<TResult>(IJavaObject)

O mecanismo de empacotamento aplica várias transformações ao arquivo JAR de entrada, tornando o fluxo de pacote altamente compressível por um compressor como gzip ou zip.

GetJniTypeName(IJavaPeerable)

O mecanismo de empacotamento aplica várias transformações ao arquivo JAR de entrada, tornando o fluxo de pacote altamente compressível por um compressor como gzip ou zip.

PackAsync(Pack200+IPacker, JarFile, Stream)

O mecanismo de empacotamento aplica várias transformações ao arquivo JAR de entrada, tornando o fluxo de pacote altamente compressível por um compressor como gzip ou zip.

PackAsync(Pack200+IPacker, JarInputStream, Stream)

O mecanismo de empacotamento aplica várias transformações ao arquivo JAR de entrada, tornando o fluxo de pacote altamente compressível por um compressor como gzip ou zip.

Aplica-se a