Изменение исковых требований апк образец: Образец заявления об уменьшении размера исковых требований

Содержание

Уточнение исковых требований по ст 49 АПК РФ. Образец уточнения исковых требований

Содержание: В каких случаях необходимо уточнение В каком виде подается уточнение, порядок подачи Кто и на какой стадии процесса может подать Примерная форма ходатайства/уточнения

При составлении иска в рамках арбитражного процесса заявитель обязан указать список своих требований в тексте документа. Но в ходе разбирательства могут возникнуть обстоятельства, которые влекут за собой необходимость их уточнения, например внесения изменений в сторону увеличения или уменьшения. В таком случае потребуется составить и подать в суд соответствующее заявление, образец которого представлен в нижней части этой страницы. Данное право определено ст.49 АПК РФ.

В каких случаях необходимо уточнение

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

Кроме того, такая необходимость может быть связана с подачей ответчиком встречного иска. Одна из самых распространенных причин заключается в частичном выполнении должником завяленных истцом обязательств.

Внимание! Независимо от причины уточнения исковых требований, истец обязан в тексте ходатайства обосновать свое решение и приложить к документу соответствующие доказательства.

В каком виде подается уточнение, порядок подачи

Законодательством не запрещено заявлять о ходатайстве в устной форме. Это можно сделать в ходе судебного заседания. В таком случае в протокол вносится соответствующая запись. Но существует риск, что эти данные могут быть отражены не точно. Кроме того, нужно учитывать, что апелляционные суды, как правило, берут во внимание только те факты, которые подтверждаются документами, приобщенными к материалам дела. Следовательно, чтобы в будущем избежать возможных затруднений, рекомендуется подавать ходатайство в письменном виде.

Заявление составляется в свободной форме. Подать его можно непосредственно судье в ходе заседания или через канцелярию. Направить уточнения можно и почтовым отправлением, а именно, заказным письмом с уведомлением и с описью вложения. Еще один вариант — подача ходатайства в электронном виде с помощью сервиса «Мой арбитр». В таком случае потребуется авторизация через портал «Госуслуги».

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

При составлении ходатайства важно правильно сформулировать просьбу. Необходимо подчеркнуть, что истец заявляет именно об увеличении или уменьшении размера своих требований.

Кто и на какой стадии процесса может подать

Подать ходатайство об утонении исковых требований может истец. Ответчик и другие участники процесса не обладают таким правом. Заявить о просьбе внесения изменений можно на любой стадии процесса — как на подготовительном этапе, так и в ходе разбирательства, но до момента удаления судей в совещательную комнату для принятия окончательного решения по делу.

Внимание! Одновременное изменение предмета и основания иска не допускается.

Примерная форма ходатайства/уточнения

Форма ходатайства законодательством не установлена. Но при составлении заявления необходимо соблюдать общие правила формирования процессуальных документов. В тексте следует указать:

  • наименование судебной инстанции;
  • ФИО и контактные данные истца и ответчика;
  • номер дела;
  • предмет спора;
  • основания для внесения изменений;
  • суть корректировок;
  • дату подачи ходатайства и подпись заявителя.

К документу в обязательном порядке необходимо приложить новые расчеты требований.

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

Заявление об изменении оснований иска

— Юрист

Иногда в процессе рассмотрения дела фактические обстоятельства меняются, тогда истец может подать заявление об изменении оснований иска. Часто такая ситуация случается, когда истец изначально неправильно установил, какие именно правовые отношения возникли у него с ответчиком. Например, думал, что купил товар у профессионального продавца и подал иск о защите прав потребителя. А на самом деле, это продавец — обычный гражданин, не ИП. Или в процессе рассмотрения дела истец сначала полагал, что был заключен договор займа. Но оказалось, что расписка потерялась и ее физически нет. Тогда можно изменить основание иска и требовать возврата неосновательного обогащения.

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

Заявление нужно составить в письменном виде. Копию документа истец вручает ответчику и третьим лицам либо до начала судебного заседания, либо заранее направляет почтой (или доставляет под подпись нарочно). Эти лица выскажут суду свое мнение по вопросу возможности изменения основания иска и не изменится ли при этом его предмет. Если суд удовлетворит заявление, рассмотрение дела начнется сначала. При этом решение суда по заявлению зависит только от соблюдения запрета не изменять предмет. Во всех остальных вопросах изменение основания иска — прерогатива истца и его безусловное право.

Образец искового заявления об изменении оснований иска, с учетом последних изменений действующего законодательства.

В _________________________
(наименование суда)
Истец: ______________________
(ФИО полностью, адрес местожительства)

Ответчик: ____________________

(ФИО полностью или наименование, адрес)

в рамках дела № _____________

об изменении оснований иска

 

В производстве _____________ (суда) находится гражданское дело № ___________ по иску __________________(ФИО истца) к _________ (ФИО ответчика) о _________ (указать, о чем иск). При рассмотрении дела истец выяснил, что фактические обстоятельства, которые легли в основу иска, а именно: _________________ (указать какие). Поскольку первоначальное основание иска утратило актуальность и не обеспечит восстановление нарушенного ответчиком право полагаю необходимым изменить основание иска, изложив его в новой редакции:_________.

На основании изложенного, руководствуясь статьей 39 Гражданского процессуального кодекса РФ,

Прошу:

  1. Изменить основания иска на _________.

Перечень прилагаемых к заявлению документов:

  1. Уведомление о направлении (вручении) копии заявления участникам дела.

Дата подачи заявления «___»_________ ____ г.                            Подпись  _______


Скачать образец заявления: 

  Заявление об изменении оснований иска

Не нашли ответ на свой вопрос? Задайте его юристу по телефону!

Москва: +7 (499) 391-94-20

Санкт-Петербург: +7 (812) 935-52-63

Вся Россия: 8 (800) 550-82-94 (с 9. 00 до 21.00 по Москве)

Изменения компоновщика Android для разработчиков NDK

В этом документе подробно описаны важные изменения, связанные с загрузкой собственного кода в различных выпусках Android.

См. также бионический статус для общих изменений поведения libc/libm/libdl.

См. также документацию по раскрутке для получения подробной информации об изменениях в раскрутке стека (аварийных дампах) между различными выпусками.

Необходимые инструменты: в NDK есть двоичный файл arch -linux-android-readelf (например, arm-linux-androideabi-readelf или i686-linux-android-readelf) для каждой архитектуры (в toolchains/), но вы можете использовать readelf для любой архитектуры, так как мы будем проводить только базовую проверку. В Linux вам необходимо установить пакет «binutils» для readelf и «pax-utils» для scanelf.

Как мы управляем несовместимыми изменениями

Наша общая практика с изменениями поведения динамического компоновщика заключается в том, что они будут привязаны к целевому уровню API приложения:

  • Ниже затронутого уровня API мы сохраним старое поведение или выдадим предупреждение , в зависимости от обстоятельств.

  • На затронутом уровне API и выше мы откажемся от загрузки библиотеки.

  • Предупреждения о любом изменении поведения, которое повлияет на библиотеку, если вы повысите целевой уровень API, появятся в logcat при загрузке этой библиотеки, даже если вы еще не выбрали этот уровень API.

  • В предварительной сборке для разработчиков предупреждения динамического компоновщика также будут отображаться в виде всплывающих уведомлений. Опыт показывает, что многие разработчики обычно не проверяют logcat на наличие предупреждений до тех пор, пока их приложение не перестанет работать, поэтому всплывающие уведомления помогают привлечь внимание к проблемам, пока не стало слишком поздно.

Изменения в разрешении зависимостей библиотек

Пока это не было исправлено в JB-MR2, Android не включал каталог библиотеки приложений в путь поиска динамического компоновщика. Это означало, что приложения должны были вызывать dlopen или System. loadLibrary для всех переходных зависимостей перед загрузкой их основной библиотеки. Хуже того, пока это не было исправлено в JB-MR2, кэширующий код динамического компоновщика тоже кешировал сбои, так что приходилось топологически сортировать ваши библиотеки и загружать их в обратном порядке.

Если вам необходимо поддерживать устройства Android с более ранними версиями ОС, чем JB-MR2, вы можете рассмотреть ReLinker, который утверждает, что решает эти проблемы автоматически.

В качестве альтернативы, если у вас не слишком много зависимостей, может быть проще просто связать весь ваш код в одну большую библиотеку и обойти детали изменений библиотеки и поиска символов во всех прошлых (и будущих) версиях Android.

Изменения в порядке поиска в библиотеке

Мы внесли различные исправления в порядок поиска в библиотеке при разрешении символов.

В API 22 порядок загрузки изменился с «сначала в глубину» на «сначала в ширину», чтобы исправить dlsym(3).

До API 23 порядок поиска по умолчанию заключался в том, чтобы попробовать основной исполняемый файл, библиотеки LD_PRELOAD, саму библиотеку и ее библиотеки DT_NEEDED в указанном порядке. Для API 23 и более поздних версий для любой библиотеки динамический компоновщик делит другие библиотеки на глобальную группу и локальную группу. Глобальная группа используется всеми библиотеками и содержит основной исполняемый файл, библиотеки LD_PRELOAD и любую библиотеку с установленным флагом DF_1_GLOBAL (путем передачи «-z global» в ld(1)). Локальная группа — это транзитивное замыкание в ширину библиотеки и ее библиотек DT_NEEDED. Динамический компоновщик M ищет глобальную группу, за которой следует локальная группа. Это позволяет ASAN, например, гарантировать, что он может перехватить любой символ.

LD_PRELOAD и 32/64-битные

LD_PRELOAD применяются как к 32-, так и к 64-битным процессам. Это означает, что вы не должны говорить что-то вроде /system/lib/libfoo.so , а вместо этого просто говорите libfoo. so , позволяя динамическому компоновщику найти правильную библиотеку на своем пути поиска.

RTLD_LOCAL (Доступно на уровне API >= 23)

Флаг dlopen(3) RTLD_LOCAL раньше игнорировался, но правильно реализован в API 23 и более поздних версиях. Обратите внимание, что RTLD_LOCAL используется по умолчанию, поэтому будут затронуты даже вызовы dlopen(3), которые явно не использовали RTLD_LOCAL (если только они явно не использовали RTLD_GLOBAL). С RTLD_LOCAL символы не будут доступны для библиотек, загруженных последующими вызовами dlopen(3) (в отличие от ссылок на них в записях DT_NEEDED).

Хеши GNU (Доступно на уровне API >= 23)

Стиль хэшей GNU, доступный с параметром —hash-style=gnu, обеспечивает более быстрый поиск символов и теперь поддерживается динамическим компоновщиком в API 23 и выше. (Используйте —hash-style=both, если вы хотите создать код, использующий эту функцию >= Android M, но все еще работающий в более старых версиях.)

Правильная обработка имени/пути (доступно на уровне API >= 23)

динамический компоновщик теперь понимает разницу между soname библиотеки и ее путем (общедоступная ошибка https://code. google.com/p/android/issues/detail?id=6670). Уровень API 23 — это первый релиз, в котором реализован поиск по soname. Более ранние выпуски предполагали, что базовым именем библиотеки было soname, и использовали его для поиска уже загруженных библиотек. Например, dlopen("/this/directory/does/not/exist/libc.so", RTLD_NOW) найдет /system/lib/libc.so , потому что он уже загружен. Это также означало, что было невозможно иметь две библиотеки "dir1/libx.so" и "dir2/libx.so" — динамический компоновщик не мог определить разницу и всегда использовал ту, которая была загружена первой. , даже если вы явно пытались загрузить оба. Это также относится к записям DT_NEEDED.

Некоторые приложения имеют неправильные записи DT_NEEDED (обычно это абсолютные пути в файловой системе сборочной машины), которые раньше работали, потому что мы игнорировали все, кроме базового имени. Эти приложения не смогут загрузиться на уровне API 23 и выше.

Управление версиями символов (Доступно на уровне API >= 23)

Управление версиями символов позволяет библиотекам обеспечивать лучшую обратную совместимость. Например, если автор библиотеки сознательно изменяет поведение функции, он может предоставить две версии в одной и той же библиотеке, чтобы старый код получил старую версию, а новый код — новую версию. Это поддерживается на уровне API 23 и выше.

Открытие общих библиотек непосредственно из APK

В уровне API 23 и выше можно открыть файл .so непосредственно из APK. Просто используйте System.loadLibrary("foo") точно так же, как обычно, но установите android:extractNativeLibs="false" в ваш AndroidManifest.xml . В более старых версиях файлы .so извлекались из APK-файла во время установки. Это означало, что они занимали место в вашем APK и снова в вашем установочном каталоге (и это было засчитано против вас и сообщалось пользователю как место, занимаемое вашим приложением). Любой файл .so, который вы хотите загрузить непосредственно из APK, должен быть выровнен по странице (на странице 409).6-байтовая граница) в zip-файле и хранится в несжатом виде. Текущие версии инструмента zipalign заботятся о выравнивании.

Обратите внимание, что в уровне API 23 и выше dlopen(3) откроет библиотеку из любого zip-файла, а не только из вашего APK. Просто дайте dlopen(3) путь вида «my_zip_file.zip!/libs/libstuff.so». Как и в случае с APK, библиотека должна быть выровнена по страницам и храниться в несжатом виде, чтобы это работало.

Частный API (Принудительно для уровня API >= 24)

Собственные библиотеки должны использовать только общедоступный API и не должны связываться с библиотеками платформы, отличной от NDK. Начиная с API 24 это правило применяется, и приложения больше не могут загружать библиотеки платформ, отличных от NDK. Это правило применяется динамическим компоновщиком, поэтому непубличные библиотеки недоступны независимо от того, как код пытается их загрузить: System.loadLibrary, записи DT_NEEDED и прямые вызовы dlopen(3) будут работать одинаково.

Пользователи должны иметь единообразное взаимодействие с приложениями при обновлении, а разработчикам не нужно делать экстренные обновления приложений для обработки изменений платформы. По этой причине мы не рекомендуем использовать закрытые символы C/C++. Частные символы не проверяются в рамках набора тестов совместимости (CTS), который должны пройти все устройства Android. Их может не быть, или они могут вести себя по-другому. Это увеличивает вероятность сбоя приложений, которые их используют, на определенных устройствах или в будущих выпусках — как многие разработчики обнаружили, когда Android 6.0 Marshmallow переключился с OpenSSL на BoringSSL.

Чтобы уменьшить влияние этого перехода на пользователей, мы определили набор библиотек, которые широко используются в наиболее часто устанавливаемых приложениях Google Play и которые мы можем поддерживать в краткосрочной перспективе (включая libandroid_runtime.so , libcutils.so, libcrypto.so и libssl.so). Чтобы дать вам больше времени для перехода, мы будем временно поддерживать эти библиотеки; поэтому, если вы видите предупреждение о том, что ваш код не будет работать в будущих версиях, исправьте это сейчас!

Между O и R этот режим совместимости можно отключить, установив системное свойство ( debug. ld.greylist_disabled ). Это свойство игнорируется в S и более поздних версиях.

 $ readelf --dynamic libBroken.so | НЕОБХОДИМО
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libnativehelper.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libutils.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libstagefright_foundation.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libmedia_jni.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [liblog.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libdl.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libz.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libstdc++.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libm.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libc.so]
 

Возможные проблемы : начиная с API 24 динамический компоновщик не будет загружать частные библиотеки, препятствуя загрузке приложения.

Решение : перепишите собственный код, чтобы он полагался только на общедоступный API. В качестве краткосрочного обходного пути в проект можно скопировать библиотеки платформы без сложных зависимостей (libcutils. so). В качестве долгосрочного решения необходимо скопировать соответствующий код в дерево проекта. Внутренние API-интерфейсы SSL/Media/JNI/binder не должны быть доступны из собственного кода. При необходимости собственный код должен вызывать соответствующие общедоступные методы API Java.

Полный список общедоступных библиотек доступен в NDK в разделе platform/android-API/usr/lib.

Примечание: SSL/crypto — это особый случай, приложения НЕ ДОЛЖНЫ напрямую использовать платформы libcrypto и libssl, даже на более старых платформах. Все приложения должны использовать GMS Security Provider, чтобы обеспечить их защиту от известных уязвимостей.

Отсутствуют заголовки разделов (принудительно для уровня API >= 24)

Каждый файл ELF содержит дополнительную информацию, содержащуюся в заголовках разделов. Эти заголовки должны присутствовать сейчас, потому что динамический компоновщик использует их для проверки достоверности. Некоторые разработчики удаляют их, пытаясь запутать двоичный код и предотвратить обратный инжиниринг. (Это на самом деле не помогает, потому что можно восстановить удаленную информацию с помощью широкодоступных инструментов.)

 $ readelf --header libBroken.so | grep 'заголовки разделов'
  Начало заголовков разделов: 0 (байт в файл)
  Размер заголовков разделов: 0 (байт)
  Количество заголовков разделов: 0
 

Решение : удалите из сборки дополнительные шаги, которые удаляют заголовки разделов.

Перемещение текста (принудительно для уровня API >= 23)

Начиная с API 23, общие объекты не должны содержать перемещения текста. То есть код должен загружаться как есть и не должен изменяться. Такой подход сокращает время загрузки и повышает безопасность.

Обычной причиной перемещения текста является написанный от руки ассемблер, не зависящий от позиции. Это не распространено. Используйте инструмент scanelf, как описано в нашей документации для дальнейшей диагностики:

 $ scanelf -qT libTextRel.so
  libTextRel.so: (память/данные?) [0x15E0E2] в (оптимизировано: предыдущий simd_broken_op1) [0x15E0E0]
  libTextRel.
so: (память/данные?) [0x15E3B2] in (оптимизировано: предыдущий simd_broken_op2) [0x15E3B0] ...

Если у вас нет доступного инструмента scanelf, вместо этого можно выполнить базовую проверку с помощью readelf, найдите либо запись TEXTREL, либо флаг TEXTREL. Либо по отдельности достаточно. (Значение, соответствующее записи TEXTREL, не имеет значения и обычно равно 0 — просто наличие записи TEXTREL объявляет, что .so содержит перемещение текста). В этом примере присутствуют оба индикатора:

 $ readelf --dynamic libTextRel.so | grep ТЕКСТРЕЛ
 0x00000016 (ТЕКСТРЕЛ) 0x0
 0x0000001e (ФЛАГИ) СИМВОЛИЧЕСКИЙ ТЕКСТРЕЛ BIND_NOW
 

Примечание: технически возможно иметь общий объект с записью/флагом TEXTREL, но без фактического перемещения текста. Этого не происходит с NDK, но если вы создаете файлы ELF самостоятельно, убедитесь, что вы не создаете файлы ELF, которые утверждают, что имеют перемещение текста, потому что динамический компоновщик Android доверяет записи/флагу.

Потенциальные проблемы : Перемещение обеспечивает доступность кодовых страниц для записи и расточительно увеличивает количество грязных страниц в памяти. Динамический компоновщик выдавал предупреждения о перемещении текста, начиная с Android K (API 19), но в API 23 и выше он отказывается загружать код с перемещением текста.

Решение : переписать ассемблер так, чтобы он был независимым от позиции, чтобы гарантировать отсутствие необходимости перемещения текста. В руководстве Gentoo Textrels есть инструкции по исправлению перемещений текста и более подробная документация по scanelf.

Неверные записи DT_NEEDED (принудительно для уровня API >= 23)

Хотя зависимости библиотек (записи DT_NEEDED в заголовках ELF) могут быть абсолютными путями, это не имеет смысла на Android, поскольку вы не можете контролировать, где будет располагаться ваша библиотека. быть установлен системой. Запись DT_NEEDED должна совпадать с SONAME необходимой библиотеки, оставляя задачу поиска библиотеки во время выполнения динамическому компоновщику.

До API 23 динамический компоновщик Android игнорировал полный путь и использовал только базовое имя (часть после последнего «/») при поиске необходимых библиотек. Начиная с API 23 компоновщик времени выполнения будет точно учитывать DT_NEEDED, поэтому он не сможет загрузить библиотеку, если она не присутствует в этом точном месте на устройстве.

Хуже того, в некоторых системах сборки есть ошибки, из-за которых они вставляют записи DT_NEEDED, указывающие на файл на хосте сборки, чего нельзя найти на устройстве.

 $ readelf --dynamic libSample.so | НЕОБХОДИМО
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libm.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libc.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека: [libdl.so]
 0x00000001 (НЕОБХОДИМО) Общая библиотека:
[C:\Users\сборка\Android\ci\jni\libBroken.so]
 

Возможные проблемы : до API 23 использовалось базовое имя записи DT_NEEDED, но, начиная с API 23, среда выполнения Android попытается загрузить библиотеку, используя указанный путь, и этот путь не будет существовать на устройстве. Существуют неработающие сторонние цепочки инструментов/системы сборки, которые используют путь на хосте сборки вместо SONAME.

Решение : убедитесь, что на все необходимые библиотеки ссылается только SONAME. Лучше позволить компоновщику среды выполнения найти и загрузить эти библиотеки, поскольку их расположение может меняться от устройства к устройству.

Отсутствует SONAME (Обязательно для уровня API >= 23)

Каждый общий объект ELF («собственная библиотека») должен иметь атрибут SONAME (Имя общего объекта). Цепочка инструментов NDK добавляет этот атрибут по умолчанию, поэтому его отсутствие указывает либо на неправильно настроенную альтернативную цепочку инструментов, либо на неправильную конфигурацию вашей системы сборки. Отсутствие SONAME может привести к проблемам во время выполнения, например к загрузке неправильной библиотеки: вместо этого используется имя файла, когда этот атрибут отсутствует.

 $ readelf --dynamic libWithSoName.so | grep SONAME
 0x0000000e (SONAME) Имя библиотеки: [libWithSoName. so]
 

Потенциальные проблемы : конфликты пространств имен могут привести к загрузке неправильной библиотеки во время выполнения, что приводит к сбоям, когда требуемые символы не найдены, или вы пытаетесь использовать несовместимую с ABI библиотеку, которая не является библиотекой, которую вы ожидали .

Разрешение : текущий NDK по умолчанию генерирует правильный SONAME. Убедитесь, что вы используете текущий NDK и что вы не настроили свою систему сборки для создания неверных записей SONAME (используя параметр компоновщика -soname).

__register_atfork (Доступно на уровне API >= 23)

Чтобы разрешить отмену регистрации обработчиков atfork и pthread_atfork на dlclose, эта новая функция API уровня изменена. __register_atfork . Код, использующий эти функции, созданный с целевым уровнем API >= 23, поэтому не будет загружаться в более ранних версиях Android с ошибкой, ссылающейся на __register_atfork 9. 0038 .

Разрешение : создайте свой код с уровнем целевого API NDK, который соответствует минимальному уровню API вашего приложения, или избегайте использования atfork / pthread_atfork .

Поддержка DT_RUNPATH (доступно на уровне API >= 24)

Если файл ELF содержит запись DT_RUNPATH, в перечисленных там каталогах будет выполняться поиск записей DT_NEEDED. Строка ${ORIGIN} будет перезаписана во время выполнения в каталог, содержащий файл ELF. Это позволяет использовать относительные пути. ${LIB} и ${PLATFORM} замены, поддерживаемые в некоторых системах, в настоящее время не реализованы на Android.

Записываемые и исполняемые сегменты (принудительно для уровня API >= 26)

Каждый сегмент в файле ELF имеет связанные флаги, которые сообщают динамическому компоновщику, какие разрешения предоставлять соответствующей странице в памяти. В целях безопасности данные не должны быть исполняемыми, а код не должен быть доступен для записи. Это означает, что флаги W (для записи) и E (для исполняемого файла) должны быть взаимоисключающими. Исторически это не применялось, но сейчас.

 $ readelf --program-headers -W libBadFlags.so | grep МЫ
  ЗАГРУЗКА 0x000000 0x00000000 0x00000000 0x4c01d 0x4c01d RWE 0x1000
 

Резолюция : нам известен один промежуточный программный продукт, который вводит их в ваше приложение. Поставщик промежуточного программного обеспечения знает о проблеме и предлагает исправление.

Недопустимые заголовки заголовков/разделов ELF (принудительно для уровня API >= 26)

В уровне API 26 и выше динамический компоновщик проверяет дополнительные значения в заголовках заголовков ELF и разделов и терпит неудачу, если они недействительны.

Пример ошибки

 Ошибка dlopen: "/data/data/com.example.bad/lib.so" имеет неподдерживаемый размер e_shentsize: 0x0 (ожидаемый 0x28)
 

Решение : не используйте инструменты, которые создают недопустимые/деформированные файлы ELF. Обратите внимание, что их использование подвергает приложение высокому риску несовместимости с будущими версиями Android.

Включить ведение журнала ошибок загрузки dlopen/dlsym и библиотеки для приложений (доступно в Android O)

Начиная с Android O можно включить ведение журнала активности динамического компоновщика для отлаживаемых приложений, установив свойство, соответствующее полному имени конкретного приложения:

 оболочка adb setprop debug.ld.app.com.example.myapp dlerror,dlopen,dlsym
АБР logcat
 

Можно использовать любую комбинацию dlerror , dlopen и dlsym . Отдельной опции dlclose нет: dlopen охватывает как загрузку, так и выгрузку библиотек. Также обратите внимание, что dlerror соответствует не фактическим вызовам dlerror(3), а любому моменту, когда динамический компоновщик записывает данные в свой внутренний буфер ошибок, поэтому вы увидите все ошибки, о которых сообщал бы динамический компоновщик, даже если код которую вы отлаживаете, на самом деле не вызывает саму dlerror(3).

В сборках userdebug и eng можно включить трассировку для всей системы, используя системное свойство debug.ld.all вместо свойства конкретного приложения. Например, чтобы включить протоколирование всех вызовов dlopen(3) (и, следовательно, dclose(3)) и всех сбоев, но не вызовов dlsym(3):

 adb shell setprop debug.ld.all dlerror,dlopen
 

dlclose плохо взаимодействует с локальными переменными потока с нетривиальными деструкторами

Android позволяет dlclose выгружать библиотеку, даже если все еще существуют локальные переменные потока с нетривиальными деструкторами. Это приводит к сбоям при выходе потока и попытке вызвать деструктор, код которого выгружен (как в issue 360, исправлено в P).

Отсутствие вызова dlclose или проверка того, что в вашей библиотеке установлено значение RTLD_NODELETE (чтобы вызовы dlclose фактически не выгружали библиотеку) являются возможными обходными путями.

Pre-M M+ P+
No workaround Works for static STL Broken Works
-Wl,-z,nodelete Работает для статического STL Works Works
No dlclose Works Works Works

Use of IFUNC in libc (True for all API levels on devices running Q)

Starting with Android Q (уровень API 29), libc использует функциональность IFUNC в динамическом компоновщике для выбора оптимизированных процедур ассемблера во время выполнения, а не во время сборки. Это позволяет нам использовать один и тот же libc.so на всех устройствах, и это похоже на то, что уже делали другие ОС. Поскольку зигота использует библиотеку C, это решение принимается задолго до того, как мы узнаем, на какой уровень API нацелено приложение, поэтому весь код видит новую библиотеку C, использующую IFUNC. Большинство приложений не должны быть затронуты этим изменением, но приложениям, которые перехватывают или пытаются обнаружить перехват функций библиотеки C, может потребоваться исправить свой код, чтобы справиться с перемещениями IFUNC. Затронутые функции от , но в будущем он может быть расширен, чтобы включить больше функций (и больше библиотек).

Относительные перемещения (RELR)

В Android добавлена ​​экспериментальная поддержка относительных перемещений RELR на уровне API 28, но с использованием констант SHT_ и DT_ в пространстве, зарезервированном для частного использования ОС.

Уровень API 30 добавлена ​​поддержка файлов ELF с использованием официальных констант SHT_ и DT_ .

Кодировка RELR не связана с более ранним форматом «упакованных релокаций», доступным с уровня API 23.

Нет планов по удалению поддержки файлов ELF, использующих старые константы частного использования ОС для RELR, а также файлов ELF, использующих упакованные релокации.

Подробнее об относительных перемещениях и их долгой и сложной истории можно прочитать на странице https://maskray.me/blog/2021-10-31-relative-relocations-and-relr.

Шаг 2. Добавьте информацию о приложении

Выберите Android APK или App Bundle или Web App в раскрывающемся меню в зависимости от типа приложения, которое вы отправляете.

На вкладке Информация о приложении вы загружаете двоичные файлы Android (AAB или APK), указываете, какие устройства поддерживает ваше приложение, и многое другое. Дополнительные концептуальные темы, связанные с двоичными файлами, см. в следующих разделах:

  • Подготовка двоичного файла: содержит информацию о подготовке двоичного файла и оболочке кода, которую Amazon использует с вашим приложением, а также об ограничениях размера и других деталях.
  • Фильтрация устройств и совместимость: объясняет, как атрибуты в вашем манифесте определяют устройства, которые поддерживает ваш двоичный файл.

    В следующей таблице описаны поля на вкладке Информация о приложении для приложений Android.

    Поля вкладки «Информация о приложении»
    Поле Описание
    Добавить наборы приложений или файлы APK  

    Загрузите пакет приложений Android (AAB) или файл APK. Если вы отправляете APK-файл и не используете Android Studio для создания подписанного APK-файла, вам может потребоваться выравнивание файла по zip-архиву. Вы можете загружать несколько бинарных файлов, помещая по одному файлу в поле. Когда вы добавляете двоичный файл, вы можете просмотреть его сведения, щелкнув значок информации . Эти сведения включают код версии, имя версии, размер файла, имя пакета, минимальную версию SDK, функции, библиотеки, разрешения, локализацию, поддерживаемые экраны, совместимые экраны, сведения об OpenGL и собственные платформы. Например:

    Эти сведения определяют, какие устройства поддерживаются вашим двоичным файлом (фильтрация описана в разделе «Фильтрация и совместимость устройств»).

    Совет: Имя пакета в вашем приложении должно быть уникальным и не должно включать в себя amazon . Если вы используете то же имя пакета, что и другое приложение, вы получите сообщение об ошибке при загрузке двоичного файла. Код версии также должен быть уникальным (и не совпадать с кодом версии в предыдущем загруженном вами двоичном файле).

    После загрузки двоичного файла файл получает псевдоним, например, «APK1». Вы можете переименовать псевдоним по желанию. Пользовательский псевдоним используется внутри компании и не виден клиентам. Дополнительные сведения о двоичных файлах см. в разделе Подготовка двоичного файла и обновление опубликованного приложения.

    Разрешить Amazon применять DRM?  

    DRM (управление цифровыми правами) защищает ваше приложение от несанкционированного использования. Без DRM ваше приложение может использоваться любым пользователем без ограничений.

    Примечание. Если ваше приложение использует Appstore SDK, вы не увидите этот параметр. Вы можете добавить DRM в свое приложение с помощью API DRM, который является частью SDK Appstore. Дополнительные сведения см. в разделе Обзор DRM.

    Если ваше приложение не использует Appstore SDK, Amazon может автоматически добавить в ваше приложение функции DRM. Выберите Да , чтобы разрешить Amazon добавить DRM в ваше приложение. Выберите Нет , если вы не хотите, чтобы Amazon добавляла DRM в ваше приложение.

    Если у вас есть несколько двоичных файлов, выбранная вами настройка DRM применяется ко всем двоичным файлам вашего приложения. Если вы ранее загрузили двоичные файлы и добавляете новый двоичный файл с другими настройками DRM, вы должны заменить предыдущие двоичные файлы, если хотите, чтобы они получили обновленные настройки DRM. В противном случае ваши предыдущие двоичные файлы сохраняют те же настройки DRM, что и раньше. Дополнительные сведения об автоматически применяемом Amazon DRM см. в разделе О DRM.

    Название приложения  

    Название вашего приложения, используемое только в консоли разработчика. Вы определяете заголовок, который пользователи видят в Appstore и на устройствах, на вкладке Описание в поле Показать заголовок .

    Артикул приложения  

    App Stock Keeping Unit string. Артикул — это уникальная строка (которую вы определяете по своему выбору) для вашего приложения. Например: com.amazon.example.myapp.v1 ). Артикул становится идентификатором вашего приложения для ваших собственных целей отслеживания. Amazon не требует и не использует SKU приложения. Однако добавление уникального идентификатора может помочь вам отслеживать несколько версий вашего приложения. Обратите внимание, что SKU чувствительны к регистру и имеют максимальную длину 150 символов. Они могут содержать символы a–z, A–Z, 0–9, символы подчеркивания, точки и тире.

    Ключи API отправки приложений  

    После сохранения приложения вы увидите ключи API отправки приложений. Эти ключи позволяют программно управлять информацией о вашем приложении через API отправки приложений.

    Категория приложения  

    Категория для вашего приложения, основанная на вашем лучшем суждении. Категории используются в основном для настройки дерева просмотра Amazon Appstore и для группировки похожих, связанных и рекомендуемых приложений для пользователей. Категории верхнего уровня одинаковы для планшетов Fire, Fire TV и устройств Android, отличных от Amazon, хотя некоторые подкатегории могут быть недоступны для приложений Fire TV. Если вы не видите очевидную категорию для своего приложения, выберите наиболее подходящую.

    Примечания к выпуску  

    Это поле появляется, только если вы отправляете новую версию существующего приложения. Опишите изменения, которые вы внесли в это обновление. На странице сведений о вашем приложении в магазине приложений примечания к выпуску отображаются в разделе «Последние обновления». На устройствах Fire TV пользователи (которые установили приложение) видят примечания к выпуску в разделе «Уведомления» в настройках. На планшетах Fire пользователи видят обновления в раскрывающемся меню уведомлений вверху.

    Примечание: Только роли администратора учетной записи и маркетолога могут обновлять это поле. Дополнительные сведения см. в разделе Разрешения по ролям.

    Служба поддержки клиентов  

    Если выбрано, ваша информация о поддержке по умолчанию (находится в разделе Настройки > Профиль компании в консоли разработчика) используется для полей адреса электронной почты службы поддержки клиентов, телефона службы поддержки клиентов и веб-сайта службы поддержки клиентов.

    Адрес электронной почты службы поддержки клиентов  

    Адрес электронной почты, по которому клиенты могут связаться с вами.

    Телефон службы поддержки  

    Номер телефона, по которому клиенты могут связаться с вами.

    Веб-сайт поддержки клиентов  

    URL-адрес веб-сайта поддержки вашего приложения.

    Открытый ключ и файл PEM

    В правом верхнем углу вкладки есть ссылка на открытый ключ . Этот открытый ключ, уникальный для каждого приложения, устанавливает безопасный канал связи между Amazon Appstore и вашим приложением. Когда вы создаете открытый ключ из консоли разработчика, Amazon создает соответствующий закрытый ключ. Эти открытый и закрытый ключи образуют пару ключей для подписи ответов на лицензию. С помощью этой пары ключей вы гарантируете, что пользователи, устанавливающие ваше приложение, авторизованы.

    Открытый ключ хранится в файле PEM. Если ваше приложение использует Appstore SDK или подключаемый модуль Appstore SDK для Unity для покупок в приложении (IAP) или DRM, вы должны добавить файл PEM в свой проект. Чтобы настроить приложение с помощью открытого ключа:

    1. Нажмите Открытый ключ .
    2. В появившемся диалоговом окне «Открытый ключ» щелкните ссылку AppstoreAuthenticationKey.pem , чтобы загрузить файл PEM.

      Ссылка для скачивания файла PEM
    3. Скопируйте файл AppstoreAuthenticationKey.pem .
    4. Следуйте инструкциям для вашего типа проекта.

      Инструкции по проекту Android

      1. Вставьте файл PEM в папку app/src/main/assets вашего проекта Android Studio.
      2. В представлении «Проект» папка ресурсов обычно находится в app/src/main/assets . Если в вашем приложении нет папки с ресурсами, вы должны ее создать. Затем перетащите в него файл PEM.

      Инструкции по проекту Unity

      1. В папке Assets вашего проекта создайте новую папку с именем StreamingAssets .
      2. Вставьте файл PEM в папку Assets/StreamingAssets .

    Дополнительные сведения см. в разделе Настройка Appstore SDK с помощью открытого ключа или Настройка приложения Unity с помощью открытого ключа.

    Хэши сертификатов Appstore

    Информация о сертификатах, которая включает хэши SHA-1, MD5 и SHA-256, доступна по ссылке в правом верхнем углу вкладки. В рамках процесса загрузки Amazon удаляет вашу подпись разработчика и применяет подпись Amazon. Эта подпись уникальна для вас, не меняется и одинакова для всех приложений в вашей учетной записи. Дополнительные сведения см. в разделе Подписи приложений Amazon.

    Обновление существующего приложения

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

    Настройка поддержки устройств для вашего приложения

    После загрузки двоичного файла вашего приложения , количество поддерживаемых устройств отображается в разделе «Загруженные файлы».

    Чтобы указать, какие устройства поддерживает ваш двоичный файл, выберите Изменить рядом с количеством поддерживаемых устройств. В наложении «Поддержка устройств» устройства со знаком «X» рядом с их именем не поддерживаются. Неподдерживаемые устройства определяются атрибутами в вашем манифесте и целевыми странами на вкладке «Доступность и цены».

    Примечание. Страна или регион могут быть отключены на вкладке Доступность и цены , если ни одно из целевых устройств не доступно в этом регионе.

    Если вы видите устройство, помеченное как неподдерживаемое, узнайте почему, наведя указатель мыши на значок справки. рядом с именем устройства в диалоговом окне «Поддержка устройств», как показано на следующем рисунке.

    Совет: Дополнительные сведения о том, как определяется поддержка устройств, см. в разделах «Фильтрация и совместимость устройств» и «Поддерживаемые фильтры» в Amazon Appstore.

    При необходимости вы можете вручную удалить поддержку устройств с известными проблемами совместимости. Поддерживаемые устройства сгруппированы в три категории:

    • Планшеты Amazon Fire : Показывает поддержку планшета Fire для вашего приложения. Дополнительные сведения см. в разделе «Технические характеристики планшетного устройства». По умолчанию поддержка устройств для загруженного вами двоичного файла включена для всех планшетных устройств Amazon Fire и для всех устройств Android, отличных от Amazon.
    • Устройства Amazon Fire TV : Показывает поддержку устройства Fire TV для вашего приложения. Дополнительные сведения об именах устройств Fire TV см. в разделе Соглашения об именах Fire TV; технические характеристики см. в разделе «Технические характеристики устройства для Fire TV».

    • Android-устройства, отличные от Amazon : показывает Android-устройства, на которые можно установить ваше приложение через приложение Amazon Appstore для Android. Amazon Appstore поддерживает устройства сторонних производителей под управлением Android 5.0 и более поздних версий. Этот вариант предоставляет дополнительные возможности распространения вашего приложения (и особенно полезен, если ваше приложение доступно только в магазине приложений Amazon, а не в Google Play). В этой группе устройств Android, отличных от Amazon, устройства сортируются по трем группам: Поддерживаемые (совместимые), Исключенные (выбранные вручную) и Неподдерживаемые (несовместимые на основе настроек вашего манифеста).

    Чтобы указать, какие устройства поддерживаются вашим приложением, нажмите Изменить поддержку устройств и обновите указанные устройства. Включите (зеленый) или выключите (серый) поддержку устройств в зависимости от ситуации. Используйте вкладки в верхней части диалогового окна для перемещения между категориями.

    Например, если вы загружаете приложение потокового мультимедиа, предназначенное для устройств Fire TV, нажмите Изменить поддержку устройств в строке Устройства Amazon Fire TV и выберите соответствующие параметры поддержки устройств в Вкладка Amazon Fire TV :

    Дополнительную информацию об устройствах, поддерживаемых вашим приложением, см. в следующих разделах:

    • Устранение неполадок манифеста Android и фильтрации устройств
    • Фильтрация устройств и совместимость
    • поддерживаемых фильтров в магазине приложений Amazon.

    Совет: При выпуске нового устройства Amazon магазин приложений Amazon определяет, совместимо ли ваше приложение с этим устройством, и, если да, автоматически делает ваше приложение доступным на этом устройстве. Вам не нужно возвращаться в консоль разработчика и вручную выбирать поддержку только что выпущенного устройства Amazon.

    Для устройств, отличных от Amazon, в нижней части диалогового окна «Поддержка устройств» есть вариант Все остальные устройства Android . Устройства Android, не относящиеся к Amazon, можно включать и выключать целиком, или вы можете вручную настроить поддержку устройств. Этот параметр позволяет распространять ваше приложение на любые другие устройства Android, включая будущие совместимые устройства Android. Новые устройства добавляются регулярно в зависимости от их популярности. Благодаря фильтрации манифеста Appstore автоматически определяет совместимость устройства.

    Если вы отключите «Все остальные устройства Android», вы измените свою стратегию совместимости с использования списка запрещенных на использование списка разрешений для устройств, отличных от Amazon. Другими словами, ваше приложение по умолчанию не будет совместимо с этими устройствами; вместо этого вам нужно будет вручную выбрать, какие сторонние устройства будет поддерживать ваше приложение.

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

    Устройства, поддерживающие только 64-разрядные приложения

    Некоторые устройства больше не поддерживают 32-разрядные приложения, в том числе любые 32-разрядные приложения, доступные в настоящее время в Amazon Appstore. Клиенты, пытающиеся загрузить 32-разрядное приложение на одно из этих устройств, получат уведомление о том, что приложение не соответствует системным требованиям.

    Чтобы сделать ваше приложение доступным для клиентов, использующих одно из этих устройств, добавьте в свое приложение поддержку 64-разрядной версии (arm64-v8a) и отправьте обновление с помощью портала разработчиков Amazon. Пожалуйста, не отключайте поддержку 32-разрядной версии (armeabi-v7a) при создании приложения, так как это может повлиять на выбор текущего устройства Amazon.

    Добавление нескольких двоичных файлов для одного и того же приложения

    Amazon Appstore поддерживает загрузку нескольких двоичных файлов для файлов AAB и APK. Для APK более концептуальные сведения объясняются в разделе «Несколько APK для одного и того же приложения».

    Примечание: Только для нескольких APK: Добавление нескольких файлов APK для одного и того же приложения поддерживается только для устройств Amazon. Amazon Appstore не поддерживает отправку нескольких APK-файлов для устройств, не принадлежащих Amazon. Это не относится к нескольким файлам AAB.

    При загрузке нескольких двоичных файлов убедитесь, что каждый файл имеет одно и то же имя пакета в манифесте; однако каждый отдельный двоичный файл должен иметь уникальный код версии в файле сборки Gradle.

    Важно: Когда вы загружаете свой первый двоичный файл планшета , Appstore автоматически фильтрует устройства. Когда вы загружаете дополнительный двоичный файл, вы должны вручную выбрать устройства, которые вы хотите поддерживать.

    Когда ваше приложение доступно в Appstore, с каждым устройством связан один APK. Во время отправки приложения, когда вы добавляете несколько двоичных файлов, вы должны удалить поддержку устройств из вашего первого двоичного файла, который вы хотите сделать доступным для дополнительных двоичных файлов. Следующие пошаговые инструкции и снимки экрана поясняют этот процесс выбора.

    Чтобы загрузить несколько двоичных файлов:

    1. Если вы еще не загрузили свой первый двоичный файл, загрузите его, перетащив файл в App Bundles или APK-файлы box.
    2. Для первого загруженного двоичного файла рядом с «Поддерживаемые устройства» нажмите Изменить и удалите поддержку устройств, на которые вы планируете нацелить второй двоичный файл.

      Например, предположим, что у вас есть два APK для вашего приложения Fire TV — «APK1» и «APK2». С помощью APK1 вы хотите настроить таргетинг на все устройства Fire TV, кроме Fire TV (3 rd Gen). Для APK1 нажмите Изменить рядом с «Поддерживаемые устройства» в разделе «Файл APK». В появившемся диалоговом окне «Поддержка устройства» снимите флажок «Fire TV (3 rd Gen)». Это делает Fire TV (3 rd Gen) доступным для APK2 для таргетинга. Если вы не удалите поддержку устройства из первого APK, вы не сможете нацелить его со вторым АПК

      В этом сценарии мы убрали поддержку Fire TV (3 rd Gen), потому что мы хотим выбрать его во втором APK

      . Обратите внимание: если вы обновляете существующий двоичный файл , когда вы снимаете флажок рядом поддерживаемых устройств, вы можете увидеть предупреждение «Ограниченная поддержка устройств». Это предупреждение сообщает, что вы сокращаете количество поддерживаемых устройств для своего приложения. Клиенты, которые ранее устанавливали ваше приложение на эти устройства (теперь не поддерживаемые этим двоичным файлом), не получат обновление. (Дополнительную информацию см. в разделе Предупреждение: ограниченная поддержка устройств.) Поскольку вы загружаете несколько двоичных файлов, вы можете игнорировать это уведомление. После того, как вы загрузите другой двоичный файл и удалите эти устройства из своего первого двоичного файла, предупреждение больше не будет применяться.

    3. (Необязательно) Дайте вашему двоичному файлу узнаваемый псевдоним, чтобы отличить его от следующего двоичного файла, который вы загружаете.
    4. Перетащите другой двоичный файл в поле App Bundles или APK Files . При необходимости измените псевдоним для нового загружаемого файла, чтобы отличить его от первого двоичного файла.

      Когда вы перетаскиваете другой двоичный файл на вкладку Информация о приложении , устройства, поддерживаемые первым двоичным файлом, недоступны для второго двоичного файла, поскольку два двоичных файла не могут быть установлены на одном устройстве. Под выделенными серым цветом устройствами вы должны увидеть фразу «Нацелено на другой APK в текущей версии». ("Целевой" просто означает, что вы выбрали поддержку устройства в своем приложении. ) Запомните это правило: : Несколько APK не могут быть установлены на одном устройстве. С помощью второго двоичного файла вы можете выбрать поддержку устройств, еще не выбранных первым двоичным файлом.

      Продолжая наш предыдущий пример, предположим, что вы загружаете «APK2» и хотите, чтобы Fire TV (3 rd Gen) поддерживал этот APK. Вы уже отключили поддержку этого устройства в предыдущем APK, поэтому теперь его можно будет выбрать во втором APK.

      Fire TV (3 rd Gen) можно выбрать, потому что вы еще не выбрали его поддержку в предыдущем APK. Другие устройства отмечены серым крестиком, что означает, что они недоступны для поддержки этого APK, поскольку они уже поддерживаются предыдущим APK.

      При наличии нескольких двоичных файлов Amazon Appstore не назначает двоичный файл автоматически на основе уровня API или кода версии (в отличие от Google Play). При загрузке нескольких двоичных файлов необходимо вручную выбрать поддерживаемые устройства.

    5. Когда закончите, нажмите Сохранить .

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

    Совет: Если вы заменяете двоичный файл опубликованного приложения, см. подробности в разделе Обновление опубликованного приложения. После обновления двоичного файла вам потребуется добавить примечания к выпуску в поле Примечания к выпуску с описанием того, что вы изменили.

    Устранение распространенных ошибок

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

    Ошибка: повторяющееся имя пакета

    При загрузке двоичного файла вы видите одну из следующих ошибок:

    • Не удалось загрузить APK. Имя пакета загруженного APK, com.amazon.android.yourapp, уже используется приложением, принадлежащим другому разработчику. Пожалуйста, свяжитесь с нами для получения дополнительной информации.
    • Не удалось загрузить пакет приложений. Имя загруженного пакета, com.amazon.android.yourapp, уже используется приложением, принадлежащим другому разработчику. Пожалуйста, свяжитесь с нами для получения дополнительной информации.

    Сначала убедитесь, что вы не загрузили этот двоичный файл в другую учетную запись разработчика Amazon либо в качестве отправки приложения, либо в режиме Live App Test. Если вы не загрузили этот же файл под другой учетной записью, отправьте запрос в службу поддержки, сообщив о проблеме и указав имя пакета. Чтобы отправить запрос в службу поддержки, войдите в консоль разработчика, нажмите значок ? в правом верхнем углу и нажмите Свяжитесь с нами .

    Обратите внимание, что при использовании сред разработки, таких как Unity, или уже существующих файлов манифеста возможно, что имя пакета вашего приложения будет иметь значение-заполнитель, которое следует изменить перед отправкой. Имя пакета вашего двоичного файла должно быть уникальным для приложения, которое вы публикуете, и обычно имеет формат com.companyname.appname .

    Если у вас есть связь с разработчиком или издателем, которые могли загрузить ваше приложение для живого тестирования приложений, обратитесь к своему партнеру по разработке, чтобы убедиться, что они не отправили ваш двоичный файл в свою учетную запись. Если это так, попросите их завершить текущий тест Live App. Затем свяжитесь с Amazon, указав имя пакета, чтобы решить проблему.

    Предупреждение: Ограниченная поддержка устройств

    При настройке поддержки устройств для двоичного файла отображается следующее предупреждение:

    • Поддержка устройств уменьшена по сравнению с предыдущей версией. Некоторые существующие клиенты не смогут выполнить обновление. Чтобы разрешить конфликты манифестов, Amazon рекомендует отредактировать манифест, чтобы сохранить текущую поддержку устройств.

    Это сообщение означает, что с вашим недавно загруженным двоичным файлом вы ввели новые атрибуты в свой файл манифеста или build. gradle, которые сокращают количество совместимых устройств. Чаще всего вы можете увеличить уровень API, что уменьшит количество устройств, которые могут поддерживать обновление. Таким образом, Appstore предупреждает вас, что на некоторых устройствах это обновление может быть невозможно установить.

    Например, предположим, что вы публикуете APK с атрибутами манифеста, для которых требуется минимальный уровень API 19, и клиенты с устройством, поддерживающим уровень API 19 (, но не поддерживающий уровень выше ), устанавливают приложение. Позже вы обновляете приложение новыми функциями или разрешениями, требующими как минимум APK-уровня 22. Это новое обновление будет несовместимо с предыдущей версией приложения, установленного клиентом (с уровнем API 19). В результате клиент не увидит, что доступно обновление.

    Целевое устройство недоступно

    При загрузке нового двоичного файла вы видите сообщение о том, что определенное устройство не поддерживается. Сообщение может быть одним из следующих:

    • Для вашего манифеста App Bundle требуются возможности, отсутствующие на этом устройстве.
      android:minSdkVersion = '22'; для устройства требуется «15»
    • Для вашего манифеста APK требуются возможности, отсутствующие на этом устройстве.
      android:minSdkVersion = '22'; для устройства требуется «15»

    Чтобы увидеть причину, по которой устройство не поддерживается, наведите указатель мыши на значок справки рядом с именем устройства в диалоговом окне «Поддержка устройства». Дополнительные сведения см. в разделе Настройка поддержки устройств для вашего приложения выше. Несовместимость может быть связана с уровнем API, форматом сжатия OpenGL, ЦП, размером и плотностью экрана, функциями устройства или даже другими факторами, связанными с вашим приложением, такими как отсутствие доступности в географическом регионе.

    Нацелен на другой двоичный файл в текущей версии

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

    • Нацелен другим двоичным файлом в текущей версии.

    Несколько двоичных файлов не могут поддерживать одно и то же устройство. Вы должны отредактировать поддержку устройства для одного двоичного файла, чтобы можно было выбрать поддержку устройства с другим двоичным файлом. Пошаговые инструкции см. в разделе Добавление нескольких двоичных файлов для одного и того же приложения. См. раздел «Несколько APK для одного и того же приложения» для получения более подробной информации.

    Совет: Дополнительные сведения об устранении неполадок, связанных с манифестом Android, см. в разделе Устранение неполадок манифеста Android и фильтрации устройств.

    Загрузка пакетов приложений

    Магазин приложений Amazon поддерживает формат файлов Android App Bundle для отправки приложений. Appstore получает ваш комплект приложений и создает APK. Amazon Appstore использует пакетный инструмент для преобразования файлов набора приложений в один универсальный APK, который можно загружать и устанавливать на клиентских устройствах. Пользовательский интерфейс или размер файла приложения не изменятся.

    Вы можете отправлять файлы Android App Bundle в Appstore без необходимости создавать отдельные APK. Однако файлы пакетов приложений должны соответствовать требованиям к отправке в Amazon Appstore. Подробные объяснения требований к приложению см. в разделах «Понимание отправки в Amazon Appstore» и «Контрольный список перед отправкой в ​​Amazon Appstore».

    Создание комплектов приложений

    Прежде чем отправлять комплекты приложений в Amazon Appstore, необходимо создать файл Android App Bundle (AAB). Сведения о настройке файлов пакетов приложений см. в разделе О пакетах приложений Android в документации для разработчиков Android.

    Тестовые пакеты приложений

    Перед отправкой вашего приложения Amazon Appstore рекомендует протестировать ваш пакет локально с помощью инструмента пакета . Подробнее о том, как создать APK-файл из набора приложений с помощью bundletool , см. документацию по bundletool. После локального тестирования вашего пакета Appstore рекомендует использовать Live App Testing (LAT) с вашим пакетом приложений перед отправкой вашего приложения для публикации в режиме реального времени.

    Если на этапе LAT ваши тестировщики столкнутся с проблемами при попытке доступа к функциям по запросу, попробуйте следующее:

    • Если вы хотите, чтобы функция была доступна в готовом APK, добавьте в манифест атрибут «плавления».
    • В качестве альтернативы можно исключить функцию по запросу из готового APK-файла, удалив все ссылки на нее.

    Отправка пакетов приложений

    Чтобы отправить пакет приложений в консоли разработчика:

    1. Перейдите на вкладку Информация о приложении .
    2. Загрузите файл набора приложений (.aab) в раздел «Добавить наборы приложений» или «Файлы APK» .
    3. Заполните оставшиеся разделы. Дополнительные сведения см. в разделе Поля информации о приложении.

    После загрузки пакета приложения вы увидите список устройств, которые поддерживает ваше приложение. Дополнительные сведения см. в разделе Настройка поддержки устройств для вашего приложения.

    Часто задаваемые вопросы о пакетах приложений

    В этом разделе содержатся часто задаваемые вопросы (FAQ), связанные с пакетами приложений.

    Отправка приложения
    В: Являются ли комплекты приложений Android обязательными для Amazon Appstore?
    Пакеты приложений не являются обязательными. Вы можете продолжать отправлять приложения, используя существующий формат APK.
    В. Изменяют ли наборы приложений способ отправки приложений в App Store?
    Нет, наборы приложений не изменяют процесс отправки приложения ни для одного из форматов приложения (AAB или APK).
    В: Нужно ли повторно отправлять приложение, если оно было опубликовано с использованием APK?
    Нет, вам не нужно повторно отправлять опубликованное приложение, если оно ранее было отправлено в формате APK. Вы можете продолжать публиковать новые приложения и обновлять существующие приложения, используя формат APK. У вас есть возможность использовать наборы приложений для отправки в будущем, загрузив файл в формате Android App Bundle (.aab).
    Функции набора приложений
    В: Будут ли мои приложения получать все доступные преимущества Android App Bundle?
    Магазин приложений позволяет загружать приложения в формате файла набора приложений (.aab). В настоящее время функции уменьшения размера приложений, динамической доставки и мгновенных приложений не поддерживаются. Объявления о новых функциях см. в блоге разработчиков Appstore.
    Вопрос. Что произойдет, если мой комплект приложений содержит модули динамической доставки?
    Если модуль помечен атрибутом «слияние», он объединяется с универсальным APK.
    Вопрос. Что произойдет, если мой комплект приложений содержит пакеты ресурсов?
    • Пакеты активов, не настроенные как во время установки , не объединяются в универсальный APK.
    • Пакеты ресурсов
    • , сконфигурированные как во время установки , объединены в универсальный APK.
    Вопрос. Что произойдет, если мой комплект приложений содержит модули условной доставки?
    Модули условной доставки, не отмеченные атрибутом «слияние», не объединяются в универсальный APK.

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

    Сервисы Amazon
    Вопрос. Можно ли использовать API отправки приложений с пакетами приложений?
    Нет, в настоящее время API отправки приложений не поддерживает пакеты приложений.
    Вопрос. Можно ли использовать Live App Testing (LAT) с пакетами приложений?
    Да, LAT поддерживает пакеты приложений. Appstore рекомендует использовать LAT для тестирования комплекта приложений перед его отправкой для публикации в режиме реального времени.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *