Partager via


Pack200.IPacker Interface

Définition

Le moteur packer applique différentes transformations au fichier JAR d’entrée, ce qui rend le flux de pack hautement compressible par un compresseur tel que gzip ou 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
Attributs
Implémente

Remarques

Le moteur packer applique différentes transformations au fichier JAR d’entrée, ce qui rend le flux de pack hautement compressible par un compresseur tel que gzip ou zip. Une instance du moteur peut être obtenue à l’aide #newPackerde .

Le degré élevé de compression est obtenu à l’aide d’un certain nombre de techniques décrites dans la spécification JSR 200. Certaines des techniques sont le tri, la réécriture et la colocalisation du pool constant.

Le moteur pack est initialisé à un état initial, comme décrit par leurs propriétés ci-dessous. L’état initial peut être manipulé en obtenant les propriétés du moteur (à l’aide #properties) et en stockant les propriétés modifiées sur la carte. Les fichiers de ressources sont transmis sans modification du tout. Les fichiers de classe ne contiennent pas d’octets identiques, car le décompresseur est libre de modifier les fonctionnalités de fichier de classe mineures telles que l’ordre du pool constant. Toutefois, les fichiers de classe seront sémantiquement identiques, comme spécifié dans la <cite>The Java&trade ; Spécification</cite> de machine virtuelle.

Par défaut, le packer ne modifie pas l’ordre des éléments JAR. En outre, l’heure de modification et l’indicateur de déflation de chaque élément JAR sont passés inchangés. (Toutes les autres informations zip-archive, telles que des attributs supplémentaires donnant des autorisations de fichier Unix, sont perdues.)

Notez que l’emballage et le déballage d’un fichier JAR modifient en général le contenu d’octets des fichiers de classes dans le fichier JAR. Cela signifie que l’empaquetage et le déballage invalident en général toutes les signatures numériques qui reposent sur des images d’octets d’éléments JAR. Pour signer et empaqueter un fichier JAR, vous devez d’abord empaqueter et décompresser le fichier JAR pour le « normaliser », puis calculer les signatures sur les éléments JAR décompressés, puis repacker le fichier JAR signé. Les deux étapes d’emballage doivent utiliser précisément les mêmes options, et la limite de segment peut également avoir besoin d’être définie sur « -1 », pour empêcher la variation accidentelle des limites de segments à mesure que les tailles de fichier de classe changent légèrement.

(Voici pourquoi cela fonctionne : toute réorganisation du packer fait de n’importe quelle structure classfile est idempotente, donc le deuxième emballage ne modifie pas les classements produits par le premier emballage. En outre, le déballeur est garanti par la spécification JSR 200 pour produire une image d’octet spécifique pour tout ordre de transmission donné des éléments d’archive.)

Pour maintenir la compatibilité descendante, la version du fichier pack est définie pour prendre en charge les fichiers de classe présents dans le fichier JAR d’entrée. En d’autres termes, la version du fichier pack est la plus récente, si les fichiers de classe sont les plus récents et, à l’inverse, la version du fichier pack est la plus ancienne si les versions de fichier de classe sont également les plus anciennes. Pour les versions de fichier de classe intermédiaire, la version correspondante du fichier pack sera utilisée. Par exemple : si les fichiers JAR d’entrée sont uniquement composés de fichiers de classe 1.5 (ou inférieur), un fichier pack compatible 1.5 est généré. Cela sera également le cas pour les archives qui n’ont aucun fichier de classe. Si les fichiers JAR d’entrée contiennent un fichier de classe 1.6, la version du fichier pack est définie sur 1.6.

Remarque : Sauf indication contraire, le passage d’un null argument à un constructeur ou à une méthode dans cette classe entraîne la levée d’un NullPointerException argument.

Ajouté à la version 1.5.

Documentation Java pour java.util.jar.Pack200.Packer.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

Champs

ClassAttributePfx

Lorsqu’il est concaténé avec un nom d’attribut de classe, indique le format de cet attribut, à l’aide du langage de disposition spécifié dans la spécification JSR 200.

CodeAttributePfx

Lorsqu’il est concaténé avec un nom d’attribut de code, indique le format de cet attribut.

DeflateHint

Si cette propriété est définie #TRUE ou #FALSEsi le packer définit l’indicateur de déflation en conséquence dans l’archive de sortie, et ne transmet pas les indicateurs de déflation individuels des éléments d’archive.

Effort

Si cette propriété est définie sur un chiffre décimal unique, le packer utilise la quantité indiquée d’efforts pour compresser l’archive.

Error

Chaîne « error », valeur possible pour certaines propriétés.

False

Chaîne « false », valeur possible pour certaines propriétés.

FieldAttributePfx

Lorsqu’il est concaténé avec un nom d’attribut de champ, indique le format de cet attribut.

Keep

Chaîne « keep », valeur possible pour certaines propriétés.

KeepFileOrder

Si cette propriété est définie #TRUEsur , le packer transmet tous les éléments dans leur ordre d’origine dans l’archive source.

Latest

Chaîne « latest », valeur possible pour certaines propriétés.

MethodAttributePfx

Lorsqu’il est concaténé avec un nom d’attribut de méthode, indique le format de cet attribut.

ModificationTime

Si cette propriété est définie sur la chaîne #LATESTspéciale, le packer tente de déterminer l’heure de modification la plus récente, parmi toutes les entrées disponibles dans l’archive d’origine ou l’heure de modification la plus récente de toutes les entrées disponibles dans chaque segment.

Pass

Chaîne « pass », valeur possible pour certaines propriétés.

PassFilePfx

Indique qu’un fichier doit être transmis par octets, sans compression.

Progress

Progression du décompresseur sous la forme d’un pourcentage, comme régulièrement mis à jour par le décompresseur.

SegmentLimit

Cette propriété est un chiffre qui donne la taille cible estimée N (en octets) de chaque segment d’archive.

Strip

Chaîne « strip », valeur possible pour certaines propriétés.

True

Chaîne « true », valeur possible pour certaines propriétés.

UnknownAttribute

Indique l’action à entreprendre lorsqu’un fichier de classe contenant un attribut inconnu est rencontré.

Propriétés

Handle

Obtient la valeur JNI de l’objet Android sous-jacent.

(Hérité de IJavaObject)
JniIdentityHashCode

Retourne la valeur de java.lang.System.identityHashCode() l’instance encapsulée.

(Hérité de IJavaPeerable)
JniManagedPeerState

État de l’homologue managé.

(Hérité de IJavaPeerable)
JniPeerMembers

Prise en charge de l’accès aux membres et de l’appel.

(Hérité de IJavaPeerable)
PeerReference

Retourne une JniObjectReference instance d’objet Java encapsulée.

(Hérité de IJavaPeerable)

Méthodes

AddPropertyChangeListener(IPropertyChangeListener)

Inscrit un écouteur pour les événements PropertyChange sur le mappage des propriétés.

Disposed()

Appelé lorsque l’instance a été supprimée.

(Hérité de IJavaPeerable)
DisposeUnlessReferenced()

S’il n’existe aucune référence en suspens à cette instance, les appels Dispose(); sinon, ne fait rien.

(Hérité de IJavaPeerable)
Finalized()

Appelé lorsque l’instance a été finalisée.

(Hérité de IJavaPeerable)
Pack(JarFile, Stream)

Prend un fichier JarFile et le convertit en archive Pack200.

Pack(JarInputStream, Stream)

Prend un JarInputStream et le convertit en archive Pack200.

Properties()

Obtenez l’ensemble des propriétés de ce moteur.

RemovePropertyChangeListener(IPropertyChangeListener)

Supprimez un écouteur pour les événements PropertyChange, ajoutés par le #addPropertyChangeListener.

SetJniIdentityHashCode(Int32)

Définissez la valeur retournée par JniIdentityHashCode.

(Hérité de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Le moteur packer applique différentes transformations au fichier JAR d’entrée, ce qui rend le flux de pack hautement compressible par un compresseur tel que gzip ou zip.

(Hérité de IJavaPeerable)
SetPeerReference(JniObjectReference)

Définissez la valeur retournée par PeerReference.

(Hérité de IJavaPeerable)
UnregisterFromRuntime()

Annulez l’inscription de cette instance afin que le runtime ne le retourne pas à partir d’appels futurs Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Hérité de IJavaPeerable)

Méthodes d’extension

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Le moteur packer applique différentes transformations au fichier JAR d’entrée, ce qui rend le flux de pack hautement compressible par un compresseur tel que gzip ou zip.

GetJniTypeName(IJavaPeerable)

Le moteur packer applique différentes transformations au fichier JAR d’entrée, ce qui rend le flux de pack hautement compressible par un compresseur tel que gzip ou zip.

PackAsync(Pack200+IPacker, JarFile, Stream)

Le moteur packer applique différentes transformations au fichier JAR d’entrée, ce qui rend le flux de pack hautement compressible par un compresseur tel que gzip ou zip.

PackAsync(Pack200+IPacker, JarInputStream, Stream)

Le moteur packer applique différentes transformations au fichier JAR d’entrée, ce qui rend le flux de pack hautement compressible par un compresseur tel que gzip ou zip.

S’applique à