Share via


Pack200.IPacker Schnittstelle

Definition

Die Packer-Engine wendet verschiedene Transformationen auf die JAR-Eingabedatei an, sodass der Paketdatenstrom durch einen Kompressor wie gzip oder zip hoch komprimiert werden kann.

[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
Attribute
Implementiert

Hinweise

Die Packer-Engine wendet verschiedene Transformationen auf die JAR-Eingabedatei an, sodass der Paketdatenstrom durch einen Kompressor wie gzip oder zip hoch komprimiert werden kann. Eine instance der Engine kann mit #newPackerabgerufen werden.

Der hohe Komprimierungsgrad wird durch eine Reihe von Techniken erreicht, die in der JSR 200-Spezifikation beschrieben werden. Einige der Techniken sind sortieren, neu sortieren und co-location des Konstantenpools.

Die Pack-Engine wird mit einem Anfangszustand initialisiert, wie in ihren Eigenschaften unten beschrieben. Der Anfangszustand kann durch Abrufen der Engine-Eigenschaften (mit #properties) und Speichern der geänderten Eigenschaften auf der Karte bearbeitet werden. Die Ressourcendateien werden ohne Änderungen übergeben. Die Klassendateien enthalten keine identischen Bytes, da das Entpacker kleinere Klassendateifeatures wie die konstante Poolreihenfolge ändern kann. Die Klassendateien sind jedoch semantisch identisch, wie in <Zitat the>Java&trade angegeben; Vm-Spezifikation</Cite>.

Standardmäßig ändert der Packer die Reihenfolge der JAR-Elemente nicht. Außerdem werden die Änderungszeit und der Deflationshinweis jedes JAR-Elements unverändert übergeben. (Alle anderen ZIP-Archivinformationen, z. B. zusätzliche Attribute, die Unix-Dateiberechtigungen erteilen, gehen verloren.)

Beachten Sie, dass das Packen und Entpacken einer JAR-Datei im Allgemeinen den Bytewise-Inhalt von Klassendateien in der JAR-Datei ändert. Dies bedeutet, dass das Packen und Auspacken im Allgemeinen alle digitalen Signaturen ungültig macht, die auf bytewise-Bildern von JAR-Elementen basieren. Um eine JAR zu signieren und zu packen, müssen Sie zuerst die JAR packen und entpacken, um sie zu "normalisieren", dann Signaturen für die entpackten JAR-Elemente zu berechnen und schließlich die signierte JAR-Datei neu zu packen. Beide Packungsschritte sollten genau die gleichen Optionen verwenden, und die Segmentgrenze muss möglicherweise auch auf "-1" festgelegt werden, um eine versehentliche Variation von Segmentgrenzen zu verhindern, wenn sich die Klassendateigrößen leicht ändern.

(Deshalb funktioniert das: Jede Neuanordnung, die der Packer von Klassendateistrukturen ausführt, ist idempotent, sodass die zweite Verpackung nicht die Reihenfolgen ändert, die von der ersten Verpackung erzeugt werden. Außerdem wird der Entpacker durch die JSR 200-Spezifikation garantiert, um ein bestimmtes byteweises Bild für jede bestimmte Übertragungsreihenfolge von Archivelementen zu erzeugen.)

Um die Abwärtskompatibilität zu gewährleisten, wird die Version der Packdatei so festgelegt, dass die Klassendateien in der JAR-Eingabedatei enthalten sind. Anders ausgedrückt: Die Version der Packdatei ist die neueste, wenn die Klassendateien die neueste sind und umgekehrt die Version der Packdatei die älteste ist, wenn die Klassendateiversionen auch die älteste sind. Für zwischengeschaltete Klassendateiversionen wird die entsprechende Packdateiversion verwendet. Beispiel: Wenn die JAR-Eingabedateien ausschließlich aus 1,5 (oder weniger) Klassendateien bestehen, wird eine 1.5-kompatible Packdatei erstellt. Dies gilt auch für Archive, die keine Klassendateien enthalten. Wenn die JAR-Eingabedateien eine 1.6-Klassendatei enthalten, wird die Version der Packdatei auf 1.6 festgelegt.

Hinweis: Sofern nicht anders angegeben, führt das Übergeben eines null Arguments an einen Konstruktor oder eine Methode in dieser Klasse dazu, dass ein NullPointerException ausgelöst wird.

Hinzugefügt in 1.5.

Java-Dokumentation für java.util.jar.Pack200.Packer.

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In Attribution License beschriebenen Begriffen verwendet werden.

Felder

ClassAttributePfx

Gibt bei Verkettung mit einem Klassenattributnamen das Format dieses Attributs an, wobei die in der JSR 200-Spezifikation angegebene Layoutsprache verwendet wird.

CodeAttributePfx

Gibt bei Verkettung mit einem Codeattributnamen das Format dieses Attributs an.

DeflateHint

Wenn diese Eigenschaft auf #TRUE oder #FALSEfestgelegt ist, legt der Packer den Deflationshinweis entsprechend im Ausgabearchiv fest und überträgt nicht die einzelnen Deflationshinweise von Archivelementen.

Effort

Wenn diese Eigenschaft auf eine einzelne Dezimalziffer festgelegt ist, verwendet der Packer den angegebenen Aufwand für die Komprimierung des Archivs.

Error

Die Zeichenfolge "error", ein möglicher Wert für bestimmte Eigenschaften.

False

Die Zeichenfolge "false", ein möglicher Wert für bestimmte Eigenschaften.

FieldAttributePfx

Gibt bei Verkettung mit einem Feldattributnamen das Format dieses Attributs an.

Keep

Die Zeichenfolge "keep", ein möglicher Wert für bestimmte Eigenschaften.

KeepFileOrder

Wenn diese Eigenschaft auf #TRUEfestgelegt ist, überträgt der Packer alle Elemente in ihrer ursprünglichen Reihenfolge innerhalb des Quellarchivs.

Latest

Die Zeichenfolge "latest", ein möglicher Wert für bestimmte Eigenschaften.

MethodAttributePfx

Gibt bei Verkettung mit einem Methodenattributnamen das Format dieses Attributs an.

ModificationTime

Wenn diese Eigenschaft auf die spezielle Zeichenfolge #LATESTfestgelegt ist, versucht der Packer, die letzte Änderungszeit zwischen allen verfügbaren Einträgen im ursprünglichen Archiv oder der letzten Änderungszeit aller verfügbaren Einträge in jedem Segment zu ermitteln.

Pass

Die Zeichenfolge "pass", ein möglicher Wert für bestimmte Eigenschaften.

PassFilePfx

Gibt an, dass eine Datei byteweise ohne Komprimierung übergeben werden soll.

Progress

Der Fortschritt des Entpackers als Prozentsatz, der regelmäßig vom Entpacker aktualisiert wird.

SegmentLimit

Diese Eigenschaft ist eine Zahl, die die geschätzte Zielgröße N (in Bytes) jedes Archivsegments angibt.

Strip

Die Zeichenfolge "strip", ein möglicher Wert für bestimmte Eigenschaften.

True

Die Zeichenfolge "true", ein möglicher Wert für bestimmte Eigenschaften.

UnknownAttribute

Gibt die Aktion an, die ausgeführt werden soll, wenn eine Klassendatei mit einem unbekannten Attribut gefunden wird.

Eigenschaften

Handle

Ruft den JNI-Wert des zugrunde liegenden Android-Objekts ab.

(Geerbt von IJavaObject)
JniIdentityHashCode

Gibt den Wert von java.lang.System.identityHashCode() für die umschlossene instance zurück.

(Geerbt von IJavaPeerable)
JniManagedPeerState

Status des verwalteten Peers.

(Geerbt von IJavaPeerable)
JniPeerMembers

Unterstützung für Zugriff und Aufruf von Mitgliedern.

(Geerbt von IJavaPeerable)
PeerReference

Gibt einen JniObjectReference des umschlossenen Java-Objekts instance zurück.

(Geerbt von IJavaPeerable)

Methoden

AddPropertyChangeListener(IPropertyChangeListener)

Registriert einen Listener für PropertyChange-Ereignisse in der Eigenschaftenzuordnung.

Disposed()

Wird aufgerufen, wenn die instance gelöscht wurde.

(Geerbt von IJavaPeerable)
DisposeUnlessReferenced()

Wenn keine ausstehenden Verweise auf diese instance vorhanden sind, ruft aufDispose(). Andernfalls wird nichts ausgeführt.

(Geerbt von IJavaPeerable)
Finalized()

Wird aufgerufen, wenn die instance abgeschlossen wurde.

(Geerbt von IJavaPeerable)
Pack(JarFile, Stream)

Verwendet eine JarFile-Datei und konvertiert sie in ein Pack200-Archiv.

Pack(JarInputStream, Stream)

Verwendet einen JarInputStream und konvertiert ihn in ein Pack200-Archiv.

Properties()

Rufen Sie den Satz der Eigenschaften dieser Engine ab.

RemovePropertyChangeListener(IPropertyChangeListener)

Entfernen Sie einen Listener für PropertyChange-Ereignisse, der #addPropertyChangeListenervon hinzugefügt wird.

SetJniIdentityHashCode(Int32)

Legen Sie den von JniIdentityHashCodezurückgegebenen Wert fest.

(Geerbt von IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Die Packer-Engine wendet verschiedene Transformationen auf die JAR-Eingabedatei an, sodass der Paketdatenstrom durch einen Kompressor wie gzip oder zip hoch komprimiert werden kann.

(Geerbt von IJavaPeerable)
SetPeerReference(JniObjectReference)

Legen Sie den von PeerReferencezurückgegebenen Wert fest.

(Geerbt von IJavaPeerable)
UnregisterFromRuntime()

Heben Sie die Registrierung dieses instance auf, damit die Laufzeit sie nicht von zukünftigen Java.Interop.JniRuntime+JniValueManager.PeekValue Aufrufen zurückgibt.

(Geerbt von IJavaPeerable)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine Typkonvertierung mit Überprüfung der Android-Laufzeit aus.

JavaCast<TResult>(IJavaObject)

Die Packer-Engine wendet verschiedene Transformationen auf die JAR-Eingabedatei an, sodass der Paketdatenstrom durch einen Kompressor wie gzip oder zip hoch komprimiert werden kann.

GetJniTypeName(IJavaPeerable)

Die Packer-Engine wendet verschiedene Transformationen auf die JAR-Eingabedatei an, sodass der Paketdatenstrom durch einen Kompressor wie gzip oder zip hoch komprimiert werden kann.

PackAsync(Pack200+IPacker, JarFile, Stream)

Die Packer-Engine wendet verschiedene Transformationen auf die JAR-Eingabedatei an, sodass der Paketdatenstrom durch einen Kompressor wie gzip oder zip hoch komprimiert werden kann.

PackAsync(Pack200+IPacker, JarInputStream, Stream)

Die Packer-Engine wendet verschiedene Transformationen auf die JAR-Eingabedatei an, sodass der Paketdatenstrom durch einen Kompressor wie gzip oder zip hoch komprimiert werden kann.

Gilt für: