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™ Спецификация< виртуальной машины/cite>.

По умолчанию упаковщик не изменяет порядок элементов 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 License.

Поля

ClassAttributePfx

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

CodeAttributePfx

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

DeflateHint

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

Effort

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

Error

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

False

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

FieldAttributePfx

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

Keep

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

KeepFileOrder

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

Latest

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

MethodAttributePfx

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

ModificationTime

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

Pass

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

PassFilePfx

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

Progress

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

SegmentLimit

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

Strip

Строка "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.

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