Это приложение не совместимо с последней версией Android. Проверьте наличие обновлений или свяжитесь с разработчиком приложения



Так и не нашёл информации. После обновления до Android 14 в приложении при первом запуске вылезает диалог "Это приложение не совместимо с последней версией Android. Проверьте наличие обновлений или свяжитесь с разработчиком приложения." При этом приложение работает без проблем.


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


Да, при targetSdkVersion 28 устройства с 64-битными процессорами могли эмулировать 32-битные библиотеки (armeabi-v7a), и приложение работало без проблем. Однако с новыми требованиями (начиная с targetSdkVersion 29 и выше) эмуляция 32-битных библиотек на 64-битных устройствах больше не поддерживается. Теперь приложения должны предоставлять 64-битные версии библиотек (например, arm64-v8a), иначе они считаются несовместимыми с устройствами, которые требуют 64-битный код.
Это связано с политикой Google по улучшению производительности и безопасности приложений на новых устройствах.

Да, вывод в том, что нужно сбилдить нативный код для 64-битной архитектуры, такой как arm64-v8a, чтобы ваше приложение было совместимо с новыми требованиями Android (targetSdkVersion 35). Это позволит вашему приложению работать на устройствах с 64-битными процессорами.

Вот что нужно сделать:

    Добавить поддержку arm64-v8a в build.gradle:

    groovy

    android {
        defaultConfig {
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a'
            }
        }
    }

    Собрать нативные библиотеки (NDK) для arm64-v8a: Убедитесь, что ваш проект NDK поддерживает 64-битную архитектуру. В CMake или ndk-build настройте сборку для arm64-v8a.

Это решит проблему совместимости на устройствах с 64-битными процессорами.


===
Если у вас нет исходников нативного кода, и вы пытаетесь просто скопировать библиотеки для armeabi-v7a в другие папки (например, arm64-v8a), это не решит проблему. Android требует наличия нативных библиотек, скомпилированных специально для 64-битной архитектуры, чтобы приложение могло корректно работать на устройствах с 64-битными процессорами.

Подкидывание armeabi-v7a библиотек в папки для arm64-v8a не будет работать, так как система будет ожидать 64-битные библиотеки для arm64-v8a, и это вызовет ошибки или падения приложения при запуске.
Возможные решения:

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

К сожалению, без 64-битной версии нативных библиотек ваше приложение не будет работать на современных устройствах с 64-битными процессорами.

 Для покупки устройства для Android разработки, выбор процессора зависит от целей и требований приложения:

    arm64-v8a (64-битный ARM процессор)
        Рекомендуется для большинства современных устройств. Практически все Android устройства с 2019 года имеют 64-битные процессоры. Google требует поддержки 64-битных архитектур для приложений с targetSdkVersion 29 и выше, и это становится стандартом.
        Поддерживает как 64-битные (arm64-v8a), так и 32-битные (armeabi-v7a) приложения, поэтому это наиболее универсальный выбор для разработки.

    armeabi-v7a (32-битный ARM процессор)
        Устаревший процессор, используется на старых устройствах или некоторых бюджетных моделях. Если ваше приложение должно поддерживать старые устройства, это может быть полезным.
        Однако, многие новые устройства и версии Android (особенно Android 14 и выше) могут больше не поддерживать чисто 32-битные приложения.

    x86 и x86_64
        x86 (32-битный Intel процессор) встречается крайне редко на современных Android устройствах. Ранее использовался на некоторых планшетах и устройствах от Intel, но уже практически не актуален.
        x86_64 (64-битный Intel процессор) также не очень распространен среди мобильных устройств. В основном встречается на эмуляторах и некоторых специализированных устройствах. Могут возникнуть сложности с поддержкой nativных библиотек, если приложение целится на ARM-устройства.

Вывод:

    Если нужна универсальность и совместимость с большинством современных устройств: выбирайте устройство с arm64-v8a процессором. Оно поддерживает как 64-битные, так и 32-битные приложения.
    Если вы тестируете старые приложения с 32-битной поддержкой: можно рассмотреть устройство с armeabi-v7a, но такие устройства становятся всё реже.
    Для эмуляции или разработки специфичных приложений под Intel: устройства с x86_64, но для реальных пользователей они почти не используются.

Таким образом, arm64-v8a — оптимальный выбор для большинства задач разработки.

====

Для игр, особенно современных и требовательных к производительности, лучше всего подойдут устройства с arm64-v8a (64-битные ARM процессоры). Вот почему:

    Высокая производительность: Большинство современных игр оптимизировано для работы на 64-битных процессорах, которые обеспечивают лучшую производительность и более эффективное использование памяти.

    Поддержка современных игр: Многие игровые разработчики ориентируются на устройства с arm64-v8a, так как они составляют подавляющее большинство новых Android устройств.

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

Причины избегать других процессоров:

    armeabi-v7a (32-битные устройства): Старые и менее производительные. Современные игры могут на них плохо работать или вовсе не запускаться, особенно с выходом новых версий Android (например, Android 14).

    x86 и x86_64: В основном используются в эмуляторах и редко встречаются на мобильных устройствах. Игры на них могут не быть так хорошо оптимизированы.

Вывод:

    Лучший выбор для игр: устройство с arm64-v8a. Это самый распространённый тип процессоров, обеспечивающий отличную производительность для современных игр и поддержку старых.

PS. Также есть ограничение GooglePlay на распостранение 32-битных приложений
и targetSdk не ниже 33

Пример обхода на Google Play

 



Комментариев нет:

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