Pack200.IPacker Interface
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 #newPacker
de .
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 |
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 |
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 |
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 |
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 |
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 |
SetJniIdentityHashCode(Int32) |
Définissez la valeur retournée par |
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 |
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. |