Устанавливаемый пакет содержит исходный код несовместимый с cpu abi устройства что делать Honor 9a

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

У меня есть приложение, использующее Google Maps API v2 , которое отлично работает. Недавно я обнаружил, что не могу установить его на это устройство не на базе ARM.

Чтобы решить эту проблему, я работаю с образцами Google Maps, предоставленными с SDK ( sdk extras google google_play_services samples)

Что дает мне то же сообщение об ошибке во время установки:

Я получаю это сообщение только на реальном устройстве, использующем Intellij (12.1.1)

Он отлично работает как с Eclipse на реальном устройстве, так и с Intellij на эмуляторе, настроенном с CPU: Intel Atom (x86)

Любая помощь будет высоко ценится!

ОБНОВЛЕНИЕ

Как и ожидалось, то же самое происходит с Android Studio.

Androiderson 12 Апр 2013 в 01:06

Есть ли в папке libs собственные библиотеки, которые входят в состав вашего приложения и могут быть несовместимы с целевой архитектурой?

ПРИЛОЖЕНИЯ НЕ ПОДДЕРЖИВАЮТСЯ НА ВАШЕМ ANDROID УСТРОЙСТВЕ | САМОЕ ПРОСТОЕ РЕШЕНИЯ ЗАПУСТИТЬ ВСЕ!!

CrazyCoder
12 Апр 2013 в 15:28

Неа. Кроме того, я пытаюсь заставить его работать, используя только пример кода из Google, который, как я считаю, не зависит от платформы.

Androiderson
12 Апр 2013 в 16:17
Можете ли вы помочь найти эту функцию в Android Studio 1.2.2?
Wishmaster
15 Июн 2015 в 18:16

3 ответа

Лучший ответ

По умолчанию IntelliJ предполагает, что папка libs в корне модуля Android содержит собственные библиотеки, даже если она просто содержит jar-файлы. Таким образом, он упаковывает APK, делая его похожим на собственные библиотеки. У меня была аналогичная проблема, когда мое приложение не имело собственного кода и работало в эмуляторе по умолчанию, но получало предупреждение ABI при установке на эмуляторе Genymotion. Чтобы исправить это, сообщите IntelliJ (или Android Studio), что ваши библиотеки не являются собственным кодом:

  1. Откройте File -> Project Structure .
  2. Нажмите Modules в левой части окна.
  3. Для каждого модуля Android разверните раскрывающийся список и выберите подпункт Android .
  4. На вкладке Structure справа удалите содержимое поля Native libs directory (вы можете оставить его пустым).
  5. После того, как вы сделаете это для каждого модуля Android в проекте и примените изменения, вам может потребоваться перестроить проект, чтобы изменения вступили в силу, выбрав Build -> Rebuild Project в глобальном меню IntelliJ.

FuegoFro 25 Ноя 2013 в 09:55

Я думаю, что это ошибка в IntelliJ, поскольку предполагается, что в вашем проекте есть собственные библиотеки. Я не нашел открытого билета на эту тему, поэтому я создам его.

Источник: question-it.com

Устанавливаемый пакет содержит исходный код несовместимый с cpu abi устройства что делать huawei

Если вы хотите скачать из Google Play новую крутую игру или опробовать популярный стриминговый сервис, но вдруг оказывается, что выбранное приложение несовместимо с вашим устройством или не поддерживается в вашей стране – да, это разочарование. Но не спешите с выводами и не опускайте рук – есть способы решения подобных проблем. Ниже мы расскажем, какие именно.

Как установить приложения на Huawei / Honor

Предупреждение

Оба предложенных нами далее способа – и использование VPN, и установка файла APK через зеркало — могут быть весьма эффективны, но они не являются гарантией решения вашей проблемы. Даже после установки приложения вы можете обнаружить, что запустить его не удаётся. Тогда несовместимость с устройством налицо, и сделать с этим ничего нельзя.

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

Используйте VPN

Подкованные пользователи Android, наверняка знают, как с помощью VPN-сервисов скрыть вашу настоящую локацию и выбрать другую, чтобы перехитрить запреты Google Play маркета. И это способ действительно работает.

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

  • 1. Скачайте TunnelBear с Google Play.
  • 2. Запустите приложение и создайте в нём аккаунт.
  • 3. С помощью переключателя запустите TunnelBear и тапните по карте мира, чтобы выбрать локацию.
  • 4. Вы получите запрос на соединение – соглашайтесь.
  • 5. Как только анимированный медведь на экране появится из туннеля в нужной вам локации, вы можете скачивать выбранное приложение.
Как очистить озу на телефоне Huawei

Не всегда вы увидите желаемое приложение в Google Play – так как оно считается несовместимым, Google может просто не показывать вам его. В таком случае приложение нужно искать по названию через запрос в поисковой строке Chrome, чтобы потом пройти по ссылке и заняться установкой. Учтите, что в течение всего этого времени VPN должен быть запущен.

Для доступа к контенту скачанных таким способом приложений сервис VPN тоже может понадобиться. Если приложение отказывается работать, утверждая, что недоступно в вашем регионе, попробуйте очистить кэш Google Play в Settings > Apps > Google Play Market.

Скачайте APK

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

Учтите, далеко не все игры или приложения запустятся, даже если вам удалось перехитрить запреты Google Play. Может сказаться что угодно – от неподходящего разрешения экрана и соотношения его сторон, до отсутствия оптимизации под конкретный процессор

HUAWEI Mobile

Для решения Вашего вопроса рекомендуем выполнить следующие действия:
Если у Вас есть карта памяти, то Вы можете перенести на карту памяти медиафайлы, такие, как изображения, видео, аудио, архивы и прочие файлы. Также имеется возможность сохранять кэш приложений на карту памяти, если такую функцию поддерживает само приложение. К сожалению, Ваш планшет не поддерживает возможность переноса или установку самих приложений на карту памяти. Это особенность дизайна, введенная начиная с Android 6.0 и выше. Она помогает обеспечить бесперебойную работу системы и безопасность данных.

Для переноса данных перейдите в приложение «Файлы» > «Память планшета» > «Внутренняя память», после чего перейдите в папку с нужными Вам файлами. Затем нажмите и удерживайте нужный Вам файл до тех пор, пока напротив него не появится отметка, после чего поставьте отметки напротив других файлов и нажмите «Переместить». После чего перейдите в «Файлы» > «Память телефона» > «SD-карта», выберите нужную Вам папку и нажмите «Переместить». Обратный перенос выполняется аналогичным способом.

Для очистки памяти Вы можете выполнить следующее:
1. Произведите очистку памяти, используя «Диспетчер планшета». Перейди в приложение «Диспетчер планшета» и нажмите кнопку «Оптимизация». После перейдите в раздел «Очистка памяти», выберите данные, которые хотите удалить, и нажмите на кнопку «Удалить».
2. Выполните очистку кэша системы через меню Recovery:
1) Отключите Ваше устройство.
2) Нажмите и удерживайте одновременно кнопки «Включить» и «Громкость вверх».
3) В появившемся меню выберите «wipe cache partition». После окончания процедуры выберите «reboot system now».
3. Отключите автообновление приложений («Play Market» > «Настройки» > «Автообновление» > «Никогда»). В этом случае приложения, установленные из «Play Market», необходимо обновлять вручную.

ABI, или двоичный интерфейс приложения (Application Binary Interface), определяет способ взаимодействия двоичных файлов друг с другом на конкретной платформе и включает соглашение о вызовах. Большинство ABI имеют один конструктивный недостаток, который снижает производительность.

Давайте начнем с рассмотрения ABI System V для процессоров линейки x86. ABI классифицирует аргументы функции по ряду различных категорий; мы будем рассматривать только две:

INTEGER: Этот класс состоит из целочисленных типов, которые помещаются в один из регистров общего назначения.

MEMORY: Этот класс состоит из типов, которые будет переданы в память и возвращены через стек.

Я не буду подробно описывать правила классификации аргументов; достаточно сказать, что в общем смысле:

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

Если структура слишком большая, она имеет класс MEMORY и передается в стек.

Если аргументов слишком много, те, которые не помещаются в регистры, будут переданы в стек.

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

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

restrict во спасение! Если бы параметр foo был аннотирован с restrict , foo не смог бы использовать его псевдоним (C11§6.7.3.1p4,11). К сожалению, компиляторы обычно не в курсе об этом факте. Более того, поскольку принудительного применения типа restrict в C нет, в общем понимании на добросовестность атрибута рассчитывать нельзя, даже если он может быть правильным в тех случаях, когда ABI C используется для связи между языками с более строгой типизацией.

Huawei band 6 перезагружается постоянно

И действительно, ABI должен поступать правильно по умолчанию. void foo ( struct bla ) намного легче читать, чем void foo ( const struct bla *restrict ), не говоря уже о том, что он лучше передает намерение и фактически обеспечивает более сильную семантическую гарантию.

Что ж, такова System V. Как обстоят дела с другими ABI? Microsoft похожа, но она передает структуры с указателем:

Структуры или объединения [не малых] размеров передаются как указатель на память, выделенную вызывающей стороной.

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

Больше ABI! ARM (извините, AAA arch 64):

Если тип аргумента является составным типом, размер которого превышает 16 байт, то аргумент копируется в память, выделенную вызывающей стороной, и аргумент заменяется указателем на копию.

Агрегаты размером более 2×XLEN бит [примечание: какого черта вы говорите о битах?] передаются по ссылке и заменяются в списке аргументов адресом.

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

Все [неоднородное] агрегаты передаются в последовательные регистры общего назначения (GPR), в регистры общего назначения и в память, или в память.

Структуры (structs), объединения (unions),или другие составные типы рассматриваются как последовательность двойных слов (doublewords), и передаются в целые регистры или регистры с плавающей запятой, как если бы они были простыми скалярными параметрами в той степени, в которой они помещаются, с любым избытком в стеке, упакованным в соответствии с обычной структурой памяти объекта.

Все это повторения одних и тех же двух ошибок.

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

ABI, или двоичный интерфейс приложения (Application Binary Interface), определяет способ взаимодействия двоичных файлов друг с другом на конкретной платформе и включает соглашение о вызовах. Большинство ABI имеют один конструктивный недостаток, который снижает производительность.

Давайте начнем с рассмотрения ABI System V для процессоров линейки x86. ABI классифицирует аргументы функции по ряду различных категорий; мы будем рассматривать только две:

INTEGER: Этот класс состоит из целочисленных типов, которые помещаются в один из регистров общего назначения.

MEMORY: Этот класс состоит из типов, которые будет переданы в память и возвращены через стек.

Я не буду подробно описывать правила классификации аргументов; достаточно сказать, что в общем смысле:

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

Если структура слишком большая, она имеет класс MEMORY и передается в стек.

Если аргументов слишком много, те, которые не помещаются в регистры, будут переданы в стек.

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

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

restrict во спасение! Если бы параметр foo был аннотирован с restrict , foo не смог бы использовать его псевдоним (C11§6.7.3.1p4,11). К сожалению, компиляторы обычно не в курсе об этом факте. Более того, поскольку принудительного применения типа restrict в C нет, в общем понимании на добросовестность атрибута рассчитывать нельзя, даже если он может быть правильным в тех случаях, когда ABI C используется для связи между языками с более строгой типизацией.

И действительно, ABI должен поступать правильно по умолчанию. void foo ( struct bla ) намного легче читать, чем void foo ( const struct bla *restrict ), не говоря уже о том, что он лучше передает намерение и фактически обеспечивает более сильную семантическую гарантию.

Что ж, такова System V. Как обстоят дела с другими ABI? Microsoft похожа, но она передает структуры с указателем:

Структуры или объединения [не малых] размеров передаются как указатель на память, выделенную вызывающей стороной.

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

Как сделать т9 на Хонор 8

Больше ABI! ARM (извините, AAA arch 64):

Если тип аргумента является составным типом, размер которого превышает 16 байт, то аргумент копируется в память, выделенную вызывающей стороной, и аргумент заменяется указателем на копию.

Агрегаты размером более 2×XLEN бит [примечание: какого черта вы говорите о битах?] передаются по ссылке и заменяются в списке аргументов адресом.

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

Все [неоднородное] агрегаты передаются в последовательные регистры общего назначения (GPR), в регистры общего назначения и в память, или в память.

Структуры (structs), объединения (unions),или другие составные типы рассматриваются как последовательность двойных слов (doublewords), и передаются в целые регистры или регистры с плавающей запятой, как если бы они были простыми скалярными параметрами в той степени, в которой они помещаются, с любым избытком в стеке, упакованным в соответствии с обычной структурой памяти объекта.

Все это повторения одних и тех же двух ошибок.

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

  • Как убрать лишний рабочий стол на xiaomi
  • Как включить nokia 6310i
  • Как настроить интернет на nokia n95
  • Nokia rm 970 не включается
  • После ремонта телефон самсунг

Источник: telefony-gid.ru

Устанавливаемый пакет содержит исходный код несовместимый с cpu abi устройства что делать honor 9a

Будь в курсе последних новостей из мира гаджетов и технологий

iGuides для смартфонов Apple

Как устанавливать на Android несовместимые с устройством приложения

Александр

Александр Кузнецов — 21 апреля 2019, 22:00

Несовместимое приложение

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

Первый способ. С помощью APK-файла

В некоторых случаев установке приложения препятствует проверка характеристик устройства магазином приложений Play Маркет. Так, например, происходило с выпущенным в это воскресенье мобильным кошельком Тинькова — из маркета он не устанавливался на смартфоны с FullHD-экранами, а установка APK-файла происходила без проблем.

Кошелёк

APK-файл можно поискать в интернете или попросить у тех, кто успешно установил нужное вам приложение. Эти файлы хранятся в памяти телефона в папке data/app. Достать их оттуда можно на устройстве с root-доступом с помощью файлового менеджера. Чтобы поставить такое приложение, зайдите в настройки безопасности, разрешите установку приложений из неизвестных источников, затем скопируйте APK-файл на устройство и запустите его.

Настройки

Второй способ. С помощью приложения Market Helper

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

1. Скачайте и установите Market Helper.

2. Откройте Market Helper, выберите тип устройства (планшет, телефон), производителя и модель, страну, оператора сотовой связи.

3. Нажмите «Activate», подождите применения новых параметров. Перезагружать устройство не нужно.
4. Зайдите в личный кабинет Google. Просто зайдите, ничего здесь делать не нужно.

5. Попробуйте установить приложения, которые были несовместимы. Чтобы вернуть устройство к исходному состоянию, нажмите «Restore» в списке доступных устройств, а затем «Activate» или просто перезагрузите его (обязательно должен быть включен Wi-Fi или передача данных).

Market Helper

Третий способ. Немного хакерский

Этот способ требует root-доступа к файловой системе и спасает только от несовместимости с самим устройством. Если запрет установлен на уровне версии операционной системы или страны, он не поможет.

1. Установите файловый менеджер Root Explorer, ES Проводник или Total Commander, запустите, зайдите в его настройки и активируйте доступ к root-директориям.

2. Зайдите в папку «System» и найдите файл «build.prop». Сохраните его резервную копию в надежное место.

3. Откройте «build.prop» как текстовый файл с помощью встроенного текстового редактора.

Файловый менеджер

4. Измените значение строк «ro.product.model» и «ro.product.manufacturer», например, на «Galaxy S4» и «Samsung» — устройство будет притворяться популярным смартфоном Samsung Galaxy S4.

5. Зайдите в «Настройки» > «Диспетчер приложений», найдите в списке Google Play Маркет, откройте сведения о нем и нажмите «Очистить данные» и «Очистить кэш».

Источник: www.iguides.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
Китай Покупай