Pack200.IPacker Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 |
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 |
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 |
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 |
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 |
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 |
SetJniIdentityHashCode(Int32) |
Impostare il valore restituito da |
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 |
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. |