Freigeben über


Pack200.IPacker Schnittstelle

Definition

Das Packermodul wendet verschiedene Transformationen auf die Eingabe-JAR-Datei an, wodurch der Paketdatenstrom von einem Kompressor wie gzip oder ZIP stark 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

Das Packermodul wendet verschiedene Transformationen auf die Eingabe-JAR-Datei an, wodurch der Paketdatenstrom von einem Kompressor wie gzip oder ZIP stark komprimiert werden kann. Eine Instanz des Moduls kann mithilfe #newPackervon .

Der hohe Grad der Komprimierung wird mit einer Reihe von Techniken erreicht, die in der JSR 200-Spezifikation beschrieben sind. Einige der Techniken sind Sortierung, Neusortierung und Koposition des Konstantenpools.

Das Packmodul wird in einen Anfangszustand initialisiert, wie in den folgenden Eigenschaften beschrieben. Der Anfangszustand kann bearbeitet werden, indem die Moduleigenschaften (mithilfe #propertiesvon ) abgerufen und die geänderten Eigenschaften auf der Karte gespeichert werden. Die Ressourcendateien werden ohne Änderungen übergeben. Die Klassendateien enthalten keine identischen Bytes, da der Entpacker frei ist, kleinere Klassendateifeatures wie die Konstantenpoolreihenfolge zu ändern. Die Klassendateien sind jedoch semantisch identisch, wie in <zitate>The Java&trade angegeben; Spezifikation</Zitat> des virtuellen Computers.

Standardmäßig ändert der Packer nicht die Reihenfolge von JAR-Elementen. Außerdem wird 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 eines JAR im Allgemeinen den Bytewise-Inhalt von Klassendateien im JAR ändern wird. Dies bedeutet, dass das Packen und Entpacken im Allgemeinen alle digitalen Signaturen ungültig machen, die auf Bytewise-Bildern von JAR-Elementen basieren. Um einen JAR zu signieren und zu packen, müssen Sie zuerst das JAR packen und entpacken, um es zu normalisieren, dann Signaturen für die entpackten JAR-Elemente zu berechnen und schließlich das signierte JAR neu zu packen. Beide Verpackungsschritte sollten genau die gleichen Optionen verwenden, und die Segmentgrenze muss möglicherweise auch auf "-1" festgelegt werden, um versehentliche Variationen von Segmentgrenzen zu verhindern, da sich die Klassendateigrößen geringfügig ändern.

(Hier ist dies der Grund, warum dies funktioniert: Jede Neuanordnung des Packers erfolgt durch klassenfile-Strukturen idempotent, sodass die zweite Verpackung die Bestellungen, die von der ersten Verpackung hergestellt werden, nicht ändert. Außerdem wird der Entpacker durch die JSR 200-Spezifikation garantiert, um ein bestimmtes Bytewise-Bild für jede bestimmte Übertragungsbestellung von Archivelementen zu erzeugen.)

Um die Abwärtskompatibilität aufrechtzuerhalten, ist die Version der Packdatei so eingestellt, dass die Klassendateien in der Eingabe-JAR-Datei enthalten sind. Mit anderen Worten, die Packdateiversion ist die neueste, wenn die Klassendateien die neueste sind und umgekehrt die Packdateiversion die älteste ist, wenn die Klassendateiversionen ebenfalls die älteste sind. Für Versionen der Zwischenklassendatei wird die entsprechende Packdateiversion verwendet. Beispiel: Wenn die Eingabe-JAR-Dateien ausschließlich aus 1.5 -Klassendateien (oder weniger) bestehen, wird eine 1.5-kompatible Packdatei erstellt. Dies ist auch bei Archiven der Fall, die keine Klassendateien enthalten. Wenn die Eingabe-JAR-Dateien eine 1.6-Klassendatei enthalten, wird die Paketdateiversion auf 1.6 festgelegt.

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

Hinzugefügt in 1.5.

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

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Felder

ClassAttributePfx

Wenn sie mit einem Klassenattributnamen verkettet werden, wird das Format dieses Attributs mithilfe der in der JSR 200-Spezifikation angegebenen Layoutsprache angegeben.

CodeAttributePfx

Wenn sie mit einem Codeattributnamen verkettet werden, wird das Format dieses Attributs angegeben.

DeflateHint

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

Effort

Wenn diese Eigenschaft auf eine einzelne Dezimalziffer festgelegt ist, verwendet der Packer den angegebenen Aufwand beim Komprimieren 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

Wenn sie mit einem Feldattributnamen verkettet werden, wird das Format dieses Attributs angegeben.

Keep

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

KeepFileOrder

Wenn diese Eigenschaft auf #TRUE festgelegt 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

Wenn sie mit einem Methodenattributnamen verkettet werden, wird das Format dieses Attributs angegeben.

ModificationTime

Wenn diese Eigenschaft auf die spezielle Zeichenfolge #LATESTfestgelegt ist, versucht der Packer, unter allen verfügbaren Einträgen im originalen Archiv oder der neuesten Ä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 bytewise übergeben werden soll, ohne Komprimierung.

Progress

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

SegmentLimit

Diese Eigenschaft ist eine Zahl, die die geschätzte Zielgröße N (in Byte) 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 auszuführende Aktion an, wenn eine Klassendatei, die ein unbekanntes Attribut enthält, gefunden wird.

Eigenschaften

Handle

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

(Geerbt von IJavaObject)
JniIdentityHashCode

Gibt den Wert java.lang.System.identityHashCode() für die umbrochene Instanz zurück.

(Geerbt von IJavaPeerable)
JniManagedPeerState

Status des verwalteten Peers.

(Geerbt von IJavaPeerable)
JniPeerMembers

Mitgliedszugriff und Aufrufunterstützung.

(Geerbt von IJavaPeerable)
PeerReference

Gibt eine JniObjectReference der umbrochenen Java-Objektinstanz zurück.

(Geerbt von IJavaPeerable)

Methoden

AddPropertyChangeListener(IPropertyChangeListener)

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

Disposed()

Wird aufgerufen, wenn die Instanz verworfen wurde.

(Geerbt von IJavaPeerable)
DisposeUnlessReferenced()

Wenn keine offenen Verweise auf diese Instanz vorhanden sind, wird nichts aufgerufen Dispose(). Andernfalls wird nichts ausgeführt.

(Geerbt von IJavaPeerable)
Finalized()

Wird aufgerufen, wenn die Instanz abgeschlossen wurde.

(Geerbt von IJavaPeerable)
Pack(JarFile, Stream)

Übernimmt ein JarFile und konvertiert es in ein Pack200-Archiv.

Pack(JarInputStream, Stream)

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

Properties()

Ruft den Satz der Eigenschaften dieses Moduls ab.

RemovePropertyChangeListener(IPropertyChangeListener)

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

SetJniIdentityHashCode(Int32)

Legen Sie den von JniIdentityHashCode.

(Geerbt von IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Das Packermodul wendet verschiedene Transformationen auf die Eingabe-JAR-Datei an, wodurch der Paketdatenstrom von einem Kompressor wie gzip oder ZIP stark komprimiert werden kann.

(Geerbt von IJavaPeerable)
SetPeerReference(JniObjectReference)

Legen Sie den von PeerReference.

(Geerbt von IJavaPeerable)
UnregisterFromRuntime()

Heben Sie die Registrierung dieser Instanz auf, damit die Laufzeit sie nicht aus zukünftigen Java.Interop.JniRuntime+JniValueManager.PeekValue Aufrufen zurückgibt.

(Geerbt von IJavaPeerable)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Das Packermodul wendet verschiedene Transformationen auf die Eingabe-JAR-Datei an, wodurch der Paketdatenstrom von einem Kompressor wie gzip oder ZIP stark komprimiert werden kann.

GetJniTypeName(IJavaPeerable)

Das Packermodul wendet verschiedene Transformationen auf die Eingabe-JAR-Datei an, wodurch der Paketdatenstrom von einem Kompressor wie gzip oder ZIP stark komprimiert werden kann.

PackAsync(Pack200+IPacker, JarFile, Stream)

Das Packermodul wendet verschiedene Transformationen auf die Eingabe-JAR-Datei an, wodurch der Paketdatenstrom von einem Kompressor wie gzip oder ZIP stark komprimiert werden kann.

PackAsync(Pack200+IPacker, JarInputStream, Stream)

Das Packermodul wendet verschiedene Transformationen auf die Eingabe-JAR-Datei an, wodurch der Paketdatenstrom von einem Kompressor wie gzip oder ZIP stark komprimiert werden kann.

Gilt für: