Condividi tramite


Pack200.IPacker Interfaccia

Definizione

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso pack altamente compressibile da un compressore, ad esempio 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
Attributi
Implementazioni

Commenti

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso pack altamente compressibile da un compressore, ad esempio gzip o ZIP. È possibile ottenere un'istanza del motore usando #newPacker.

L'elevato grado di compressione viene ottenuto usando una serie di tecniche descritte nella specifica JSR 200. Alcune delle tecniche sono l'ordinamento, la riordinamento e la co-posizione del pool costante.

Il motore pack viene inizializzato in uno stato iniziale, come descritto nelle relative proprietà di seguito. Lo stato iniziale può essere modificato ottenendo le proprietà del motore (usando #properties) e archiviando le proprietà modificate sulla mappa. I file di risorse verranno passati senza modifiche. I file di classe non conterranno byte identici, poiché il decompressore è libero di modificare le funzionalità secondarie dei file di classe, ad esempio l'ordine del pool costante. Tuttavia, i file di classe saranno semanticamente identici, come specificato in <cite>The Java™ Specifica</cite> macchina virtuale.

Per impostazione predefinita, il packer non modifica l'ordine degli elementi JAR. Inoltre, il tempo di modifica e l'hint di deflazione di ogni elemento JAR vengono passati invariati. Tutte le altre informazioni sull'archivio ZIP, ad esempio attributi aggiuntivi che assegnano autorizzazioni per i file Unix, vengono perse.

Si noti che la compressione e la decompressione di un file JAR modificheranno in generale il contenuto bytewise dei file di classe nel file JAR. Ciò significa che la compressione e la decompressione invalideranno in generale tutte le firme digitali che si basano su immagini bytewise di elementi JAR. Per firmare e comprimere un file JAR, è prima necessario comprimere e decomprimere il file JAR per "normalizzare", quindi calcolare le firme sugli elementi JAR decompressi e infine ricomprimere il file JAR firmato. Entrambi i passaggi di compressione devono usare esattamente le stesse opzioni e il limite di segmento può anche essere impostato su "-1", per evitare una variazione accidentale dei limiti di segmento quando le dimensioni del file di classe cambiano leggermente.

(Ecco perché questo funziona: qualsiasi riordinamento del packer fa di qualsiasi struttura classfile è idempotente, quindi la seconda compressione non modifica gli ordini prodotti dalla prima compressione. Inoltre, il decompressore è garantito dalla specifica JSR 200 per produrre un'immagine bytewise specifica per qualsiasi ordine di trasmissione degli elementi di archivio.

Per mantenere la compatibilità con le versioni precedenti, la versione del file pack è impostata per contenere i file di classe presenti nel file JAR di input. In altre parole, la versione del file pack sarà la più recente, se i file di classe sono la versione più recente e viceversa la versione del file pack sarà il meno recente se le versioni dei file di classe sono anche il meno recente. Per le versioni intermedie del file di classe verrà usata la versione del file pack corrispondente. Ad esempio: se i file JAR di input sono costituiti esclusivamente da file di classe 1,5 (o minori), viene prodotto un file di pacchetto compatibile con 1.5. Questo sarà anche il caso per gli archivi che non dispongono di file di classe. Se i file JAR di input contengono un file di classe 1.6, la versione del file pack verrà impostata su 1.6.

Nota: se non diversamente specificato, il passaggio di un null argomento a un costruttore o a un metodo in questa classe genererà un'eccezione NullPointerException .

Aggiunto nella versione 1.5.

Documentazione java per java.util.jar.Pack200.Packer.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal Android e usato in base ai termini descritti in 2.5 Attribution License Creative Commons 2.5 Attribution License.

Campi

ClassAttributePfx

Quando viene concatenata con un nome di attributo di classe, indica il formato di tale attributo, usando il linguaggio di layout specificato nella specifica JSR 200.

CodeAttributePfx

Quando viene concatenata con un nome di attributo di codice, indica il formato di tale attributo.

DeflateHint

Se questa proprietà è impostata su #TRUE o #FALSE, il packer imposterà di conseguenza l'hint di deflazione nell'archivio di output e non trasmetterà i singoli hint di deflation degli elementi di archivio.

Effort

Se questa proprietà è impostata su una singola cifra decimale, il packer utilizzerà la quantità di lavoro indicata per comprimere l'archivio.

Error

Stringa "error", valore possibile per determinate proprietà.

False

Stringa "false", un valore possibile per determinate proprietà.

FieldAttributePfx

Quando viene concatenata con un nome di attributo di campo, indica il formato dell'attributo.

Keep

Stringa "keep", un valore possibile per determinate proprietà.

KeepFileOrder

Se questa proprietà è impostata su #TRUE, il packer trasmetterà tutti gli elementi nell'ordine originale all'interno dell'archivio di origine.

Latest

Stringa "latest", un valore possibile per determinate proprietà.

MethodAttributePfx

Quando viene concatenata con un nome di attributo del metodo, indica il formato dell'attributo.

ModificationTime

Se questa proprietà è impostata sulla stringa #LATESTspeciale , il packer tenterà di determinare l'ora di modifica più recente, tra tutte le voci disponibili nell'archivio originale o l'ora di modifica più recente di tutte le voci disponibili in ogni segmento.

Pass

Stringa "pass", valore possibile per determinate proprietà.

PassFilePfx

Indica che un file deve essere passato tramite byte per byte, senza compressione.

Progress

Lo stato di avanzamento del decompressore come percentuale, come aggiornato periodicamente dal decompressore.

SegmentLimit

Questa proprietà è un numero che restituisce la dimensione di destinazione stimata N (in byte) di ogni segmento di archivio.

Strip

Stringa "strip", valore possibile per determinate proprietà.

True

Stringa "true", valore possibile per determinate proprietà.

UnknownAttribute

Indica l'azione da eseguire quando viene rilevato un file di classe contenente un attributo sconosciuto.

Proprietà

Handle

Ottiene il valore JNI dell'oggetto Android sottostante.

(Ereditato da IJavaObject)
JniIdentityHashCode

Restituisce il valore di java.lang.System.identityHashCode() per l'istanza di di cui è stato eseguito il wrapping.

(Ereditato da IJavaPeerable)
JniManagedPeerState

Stato del peer gestito.

(Ereditato da IJavaPeerable)
JniPeerMembers

Supporto per l'accesso ai membri e la chiamata.

(Ereditato da IJavaPeerable)
PeerReference

Restituisce un JniObjectReference oggetto dell'istanza dell'oggetto Java di cui è stato eseguito il wrapping.

(Ereditato da IJavaPeerable)

Metodi

AddPropertyChangeListener(IPropertyChangeListener)

Registra un listener per gli eventi PropertyChange sulla mappa delle proprietà.

Disposed()

Chiamato quando l'istanza è stata eliminata.

(Ereditato da IJavaPeerable)
DisposeUnlessReferenced()

Se non sono presenti riferimenti in sospeso a questa istanza, chiama Dispose(); in caso contrario, non esegue alcuna operazione.

(Ereditato da IJavaPeerable)
Finalized()

Chiamato quando l'istanza è stata finalizzata.

(Ereditato da IJavaPeerable)
Pack(JarFile, Stream)

Accetta un file JarFile e lo converte in un archivio Pack200.

Pack(JarInputStream, Stream)

Accetta un oggetto JarInputStream e lo converte in un archivio Pack200.

Properties()

Ottenere il set di proprietà di questo motore.

RemovePropertyChangeListener(IPropertyChangeListener)

Rimuovere un listener per gli eventi PropertyChange, aggiunti da #addPropertyChangeListener.

SetJniIdentityHashCode(Int32)

Impostare il valore restituito da JniIdentityHashCode.

(Ereditato da IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso pack altamente compressibile da un compressore, ad esempio gzip o ZIP.

(Ereditato da IJavaPeerable)
SetPeerReference(JniObjectReference)

Impostare il valore restituito da PeerReference.

(Ereditato da IJavaPeerable)
UnregisterFromRuntime()

Annullare la registrazione di questa istanza in modo che il runtime non lo restituisca dalle chiamate future Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Ereditato da IJavaPeerable)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo verificato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso pack altamente compressibile da un compressore, ad esempio gzip o ZIP.

GetJniTypeName(IJavaPeerable)

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso pack altamente compressibile da un compressore, ad esempio gzip o ZIP.

PackAsync(Pack200+IPacker, JarFile, Stream)

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso pack altamente compressibile da un compressore, ad esempio gzip o ZIP.

PackAsync(Pack200+IPacker, JarInputStream, Stream)

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso pack altamente compressibile da un compressore, ad esempio gzip o ZIP.

Si applica a