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 |
Если для этого свойства задано |
Effort |
Если для этого свойства задано одно десятичное число, упаковщик будет использовать указанное количество усилий при сжатие архива. |
Error |
Строка "error", возможное значение для определенных свойств. |
False |
Строка false, возможное значение для определенных свойств. |
FieldAttributePfx |
При объединениях с именем атрибута поля указывает формат этого атрибута. |
Keep |
Строка "keep", возможное значение для определенных свойств. |
KeepFileOrder |
Если для этого свойства задано |
Latest |
Строка "последняя", возможное значение для определенных свойств. |
MethodAttributePfx |
При объединениях с именем атрибута метода указывает формат этого атрибута. |
ModificationTime |
Если для этого свойства задана специальная строка |
Pass |
Строка "pass", возможное значение для определенных свойств. |
PassFilePfx |
Указывает, что файл должен передаваться по байтовой стрелке без сжатия. |
Progress |
Ход распаковки в процентах, как периодически обновляется распаковкой. |
SegmentLimit |
Это свойство является числовым, предоставляя предполагаемый целевой размер N (в байтах) каждого сегмента архива. |
Strip |
Строка "полоса", возможное значение для определенных свойств. |
True |
Строка "true", возможное значение для определенных свойств. |
UnknownAttribute |
Указывает действие, выполняемое при обнаружении файла класса, содержащего неизвестный атрибут. |
Свойства
Handle |
Возвращает значение JNI базового объекта Android. (Унаследовано от IJavaObject) |
JniIdentityHashCode |
Возвращает значение |
JniManagedPeerState |
Состояние управляемого однорангового узла. (Унаследовано от IJavaPeerable) |
JniPeerMembers |
Поддержка доступа к членам и вызовов. (Унаследовано от IJavaPeerable) |
PeerReference |
JniObjectReference Возвращает экземпляр объекта Java в оболочке. (Унаследовано от IJavaPeerable) |
Методы
AddPropertyChangeListener(IPropertyChangeListener) |
Регистрирует прослушиватель для событий PropertyChange на карте свойств. |
Disposed() |
Вызывается при удалении экземпляра. (Унаследовано от IJavaPeerable) |
DisposeUnlessReferenced() |
Если нет невыполненных ссылок на этот экземпляр, то вызывается |
Finalized() |
Вызывается при завершении экземпляра. (Унаследовано от IJavaPeerable) |
Pack(JarFile, Stream) |
Принимает JarFile и преобразует его в архив Pack200. |
Pack(JarInputStream, Stream) |
Принимает JarInputStream и преобразует его в архив Pack200. |
Properties() |
Получите набор свойств этого модуля. |
RemovePropertyChangeListener(IPropertyChangeListener) |
Удалите прослушиватель событий PropertyChange, добавленный параметром |
SetJniIdentityHashCode(Int32) |
Задайте значение, возвращаемое |
SetJniManagedPeerState(JniManagedPeerStates) |
Модуль упаковщика применяет различные преобразования к входной JAR-файлу, что делает поток пакета очень сжимаемым с помощью компрессора, например gzip или zip. (Унаследовано от IJavaPeerable) |
SetPeerReference(JniObjectReference) |
Задайте значение, возвращаемое |
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. |