Поделиться через


Pack200.IPacker Интерфейс

Определение

Модуль упаковщика применяет различные преобразования к входной JAR-файлу, что делает поток пакета очень сжимаемым с помощью компрессора, например gzip или 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
Атрибуты
Реализации

Комментарии

Модуль упаковщика применяет различные преобразования к входной JAR-файлу, что делает поток пакета очень сжимаемым с помощью компрессора, например gzip или zip. Экземпляр обработчика можно получить с помощью #newPacker.

Высокая степень сжатия достигается с помощью ряда методов, описанных в спецификации JSR 200. Некоторые методы сортировки, перезапорядочения и совместного расположения константного пула.

Подсистема пакетов инициализируется в исходное состояние, как описано ниже их свойствами. Начальное состояние можно управлять путем получения свойств обработчика (с помощью #properties) и хранения измененных свойств на карте. Файлы ресурсов будут передаваться без изменений. Файлы классов не будут содержать идентичные байты, так как распаковка свободна для изменения дополнительных функций файлов класса, таких как порядок пула констант. Однако файлы классов будут семантически идентичны, как указано в <cite>The Java™ Спецификация< или сайт> виртуальной машины.

По умолчанию средство упаковки не изменяет порядок элементов JAR. Кроме того, время изменения и указание дефляций каждого элемента JAR передается без изменений. (Все другие данные ZIP-архива, такие как дополнительные атрибуты, предоставляющие разрешения на файл Unix, теряются.)

Обратите внимание, что упаковка и распаковка JAR-файла в целом изменит содержимое байтовых файлов в JAR. Это означает, что упаковка и распаковка обычно отменяют любые цифровые подписи, которые полагаются на байтовые изображения элементов JAR. Чтобы подписать и упаковать JAR-файл, сначала необходимо упаковать и распаковывать JAR-файл, чтобы нормализовать его, а затем вычислять сигнатуры на распакованных JAR-элементах и, наконец, повторно упаковать подписанный JAR-файл. Оба шага упаковки должны использовать точно те же параметры, а ограничение сегмента также может быть задано как "-1", чтобы предотвратить случайное изменение границ сегмента, так как размеры файлов класса немного меняются.

(Вот почему это работает: любая переупорядочение упаковщика делает любые структуры classfile является идемпотентной, поэтому вторая упаковка не изменяет упорядочения, созданные первой упаковкой. Кроме того, распаковка гарантируется спецификацией JSR 200 для создания определенного байтового изображения для любого заданного порядка передачи архивных элементов.)

Чтобы обеспечить обратную совместимость, версия файла пакета устанавливается для размещения файлов классов, присутствующих в входном JAR-файле. Другими словами, версия файла пакета будет последней, если файлы класса являются последними, и наоборот, версия файла пакета будет самой старой, если версии файлов класса также являются самыми старыми. Для версий файлов промежуточного класса будет использоваться соответствующая версия файла пакета. Например, если входные JAR-файлы состоят исключительно из файлов класса 1.5 (или меньше), создается файл совместимого пакета 1.5. Это также относится к архивам, у которых нет файлов класса. Если входные JAR-файлы содержат файл класса 1.6, версия файла пакета будет иметь значение 1.6.

Примечание. Если не указано иное, передача аргумента null конструктору или методу в этом классе приведет NullPointerException к возникновению ошибки.

Добавлено в версии 1.5.

Документация по Java для java.util.jar.Pack200.Packer.

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Поля

ClassAttributePfx

При объединениях с именем атрибута класса указывает формат этого атрибута, используя язык макета, указанный в спецификации JSR 200.

CodeAttributePfx

При объединениях с именем атрибута кода указывает формат этого атрибута.

DeflateHint

Если для этого свойства задано #TRUE значение или #FALSE, средство упаковки установит подсказку дефляции соответствующим образом в выходном архиве и не будет передавать отдельные подсказки дефляции архивных элементов.

Effort

Если для этого свойства задано одно десятичное число, упаковщик будет использовать указанное количество усилий при сжатие архива.

Error

Строка "error", возможное значение для определенных свойств.

False

Строка false, возможное значение для определенных свойств.

FieldAttributePfx

При объединениях с именем атрибута поля указывает формат этого атрибута.

Keep

Строка "keep", возможное значение для определенных свойств.

KeepFileOrder

Если для этого свойства задано #TRUEзначение, упаковщик передает все элементы в исходном порядке в исходном архиве.

Latest

Строка "последняя", возможное значение для определенных свойств.

MethodAttributePfx

При объединениях с именем атрибута метода указывает формат этого атрибута.

ModificationTime

Если для этого свойства задана специальная строка #LATEST, средство упаковки попытается определить время последнего изменения, среди всех доступных записей в исходном архиве или последнего времени изменения всех доступных записей в каждом сегменте.

Pass

Строка "pass", возможное значение для определенных свойств.

PassFilePfx

Указывает, что файл должен передаваться по байтовой стрелке без сжатия.

Progress

Ход распаковки в процентах, как периодически обновляется распаковкой.

SegmentLimit

Это свойство является числовым, предоставляя предполагаемый целевой размер N (в байтах) каждого сегмента архива.

Strip

Строка "полоса", возможное значение для определенных свойств.

True

Строка "true", возможное значение для определенных свойств.

UnknownAttribute

Указывает действие, выполняемое при обнаружении файла класса, содержащего неизвестный атрибут.

Свойства

Handle

Возвращает значение JNI базового объекта Android.

(Унаследовано от IJavaObject)
JniIdentityHashCode

Возвращает значение java.lang.System.identityHashCode() для упаковаемого экземпляра.

(Унаследовано от IJavaPeerable)
JniManagedPeerState

Состояние управляемого однорангового узла.

(Унаследовано от IJavaPeerable)
JniPeerMembers

Поддержка доступа к членам и вызовов.

(Унаследовано от IJavaPeerable)
PeerReference

JniObjectReference Возвращает экземпляр объекта Java в оболочке.

(Унаследовано от IJavaPeerable)

Методы

AddPropertyChangeListener(IPropertyChangeListener)

Регистрирует прослушиватель для событий PropertyChange на карте свойств.

Disposed()

Вызывается при удалении экземпляра.

(Унаследовано от IJavaPeerable)
DisposeUnlessReferenced()

Если нет невыполненных ссылок на этот экземпляр, то вызывается Dispose(); в противном случае ничего не делает.

(Унаследовано от IJavaPeerable)
Finalized()

Вызывается при завершении экземпляра.

(Унаследовано от IJavaPeerable)
Pack(JarFile, Stream)

Принимает JarFile и преобразует его в архив Pack200.

Pack(JarInputStream, Stream)

Принимает JarInputStream и преобразует его в архив Pack200.

Properties()

Получите набор свойств этого модуля.

RemovePropertyChangeListener(IPropertyChangeListener)

Удалите прослушиватель событий PropertyChange, добавленный параметром #addPropertyChangeListener.

SetJniIdentityHashCode(Int32)

Задайте значение, возвращаемое JniIdentityHashCode.

(Унаследовано от IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Модуль упаковщика применяет различные преобразования к входной JAR-файлу, что делает поток пакета очень сжимаемым с помощью компрессора, например gzip или zip.

(Унаследовано от IJavaPeerable)
SetPeerReference(JniObjectReference)

Задайте значение, возвращаемое PeerReference.

(Унаследовано от IJavaPeerable)
UnregisterFromRuntime()

Отмените регистрацию этого экземпляра, чтобы среда выполнения не возвращала ее из будущих Java.Interop.JniRuntime+JniValueManager.PeekValue вызовов.

(Унаследовано от IJavaPeerable)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Модуль упаковщика применяет различные преобразования к входной JAR-файлу, что делает поток пакета очень сжимаемым с помощью компрессора, например gzip или zip.

GetJniTypeName(IJavaPeerable)

Модуль упаковщика применяет различные преобразования к входной JAR-файлу, что делает поток пакета очень сжимаемым с помощью компрессора, например gzip или zip.

PackAsync(Pack200+IPacker, JarFile, Stream)

Модуль упаковщика применяет различные преобразования к входной JAR-файлу, что делает поток пакета очень сжимаемым с помощью компрессора, например gzip или zip.

PackAsync(Pack200+IPacker, JarInputStream, Stream)

Модуль упаковщика применяет различные преобразования к входной JAR-файлу, что делает поток пакета очень сжимаемым с помощью компрессора, например gzip или zip.

Применяется к