Condividi tramite


Pack200.IPacker Interfaccia

Definizione

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso di pacchetto altamente comprimibile da un compressore come 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 di pacchetto altamente comprimibile da un compressore come 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, il riordinamento e la co-posizione del pool costante.

Il motore pack viene inizializzato in uno stato iniziale, come descritto di seguito dalle relative proprietà. Lo stato iniziale può essere modificato recuperando 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 decomprimitore è libero di modificare le funzionalità secondarie del 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, packer non modifica l'ordine degli elementi JAR. Inoltre, il tempo di modifica e l'hint di deflazione di ogni elemento JAR viene passato invariato. Qualsiasi altra informazione sull'archivio ZIP, ad esempio attributi aggiuntivi che assegnano autorizzazioni per i file Unix, viene persa.

Si noti che la compressione e la decompressione di un file JAR modificano in generale il contenuto bytewise dei file di classe nel file JAR. Ciò significa che la compressione e l'decompressione in genere invalidano tutte le firme digitali che si basano su immagini byte per gli 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 decomprimere il file JAR firmato. Entrambi i passaggi di compressione devono usare esattamente le stesse opzioni e il limite di segmento potrebbe anche essere impostato su "-1", per evitare variazioni accidentali dei limiti dei segmenti quando le dimensioni dei file di classe cambiano leggermente.

(Ecco perché funziona: qualsiasi riordinamento del packer fa di qualsiasi struttura di file di classe è idempotente, quindi la seconda compressione non modifica gli ordini prodotti dal primo imballaggio. Inoltre, il decomprimere è garantito dalla specifica JSR 200 per produrre un'immagine bytewise specifica per qualsiasi ordine di trasmissione specifico 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à quella 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 progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Campi

ClassAttributePfx

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

CodeAttributePfx

Se concatenato con un nome di attributo di codice, indica il formato dell'attributo.

DeflateHint

Se questa proprietà è impostata su #TRUE o #FALSE, il packer imposta l'hint di deflazione di conseguenza nell'archivio di output e non trasmetterà i singoli hint di deflazione 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", valore possibile per determinate proprietà.

FieldAttributePfx

Se concatenato con un nome di attributo di campo, indica il formato dell'attributo.

Keep

Stringa "keep", 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", valore possibile per determinate proprietà.

MethodAttributePfx

Se concatenato 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 fornisce 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 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 nella 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 di pacchetto altamente comprimibile da un compressore come 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 di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso di pacchetto altamente comprimibile da un compressore come gzip o zip.

GetJniTypeName(IJavaPeerable)

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso di pacchetto altamente comprimibile da un compressore come gzip o zip.

PackAsync(Pack200+IPacker, JarFile, Stream)

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso di pacchetto altamente comprimibile da un compressore come gzip o zip.

PackAsync(Pack200+IPacker, JarInputStream, Stream)

Il motore packer applica varie trasformazioni al file JAR di input, rendendo il flusso di pacchetto altamente comprimibile da un compressore come gzip o zip.

Si applica a