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 |
Если для этого свойства задано значение |
Effort |
Если для этого свойства задана одна десятичная цифра, упаковщик будет использовать указанный объем усилий для сжатия архива. |
Error |
Строка "error", возможное значение для определенных свойств. |
False |
Строка "false", возможное значение для определенных свойств. |
FieldAttributePfx |
При сцечении с именем атрибута поля указывает формат этого атрибута. |
Keep |
Строка "keep", возможное значение для определенных свойств. |
KeepFileOrder |
Если для этого свойства задано значение |
Latest |
Строка "latest", возможное значение для определенных свойств. |
MethodAttributePfx |
При сцечении с именем атрибута метода указывает формат этого атрибута. |
ModificationTime |
Если для этого свойства задана специальная строка |
Pass |
Строка "pass", возможное значение для определенных свойств. |
PassFilePfx |
Указывает, что файл должен передаваться байтом без сжатия. |
Progress |
Ход выполнения распаковки в процентах, периодически обновляемый распаковщиком. |
SegmentLimit |
Это свойство является числом, дающим предполагаемый целевой размер N (в байтах) каждого сегмента архива. |
Strip |
Строка "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. |