Pack200.IPacker Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 #newPacker
o .
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 |
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 |
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 |
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 |
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 |
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 |
SetJniIdentityHashCode(Int32) |
Defina o valor retornado por |
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 |
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. |