Как создать приложение, совместимое с 64-битным требованием Google Play?

После того, как я загрузил apk в play store, я получил следующее предупреждение. Какие изменения я должен сделать, чтобы выпустить сборку apk с flutter sdk для соответствия требованиям 64-бит?

Смотрите изображение, чтобы увидеть предупреждение.

https://pasteboard.co/Id8Vqoi.png

Ответы

Ответ 1

Ребята они изменили новые политики для 64-bit архитектур. Поэтому, пожалуйста, поместите этот код в ваш gradle

ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'

например

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.test.test"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

Ответ 2

Edit/Update: Google выпустил Flutter 1.7.8 + hotfix.3 в стабильном канале, что облегчает создание приложения для выпуска.

Теперь у вас есть два варианта сборки:
1. Пакет приложений (предпочтительно)
2. APK

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

Запустите приложение flutter build appbundle

Это создаст <app dir>/build/app/outputs/bundle/release/app.aab

Пакет T app содержит ваш код Dart и среду выполнения Flutter, скомпилированные для armeabi-v7a (32-bit) arm64-v8a (64-bit) armeabi-v7a (32-bit) и arm64-v8a (64-bit).

Теперь вы можете загрузить этот пакет приложений в Google Play.

Построить APK

flutter build apk --split-per-abi

Эта команда приводит к двум файлам APK:

<app dir>/build/app/outputs/apk/release/app-armeabi-v7a-release.apk
<app dir>/build/app/outputs/apk/release/app-arm64-v8a-release.apk

Удаление флага --split-per-abi приводит к толстому APK, содержащему ваш код, скомпилированный для всех целевых ABI. Такие APK больше по размеру, чем их разделенные аналоги, что заставляет пользователя загружать собственные двоичные файлы, которые не применимы к архитектуре их устройств.

Если вы не обновились до версии 1.7, приведенное ниже решение должно работать.

Вам нужно собрать два apk и загрузить их вместе. один для 32 и другой для 64 бит.

Это то, что работало для меня, я на flutter v1.5.4-hotfix.2

Сначала запустите flutter build apk --release и загрузите файл apk

Затем увеличьте версию и номер сборки в файле pubspec.yml и запустите

flutter build apk --release --target-platform=android-arm64

Загрузите этот новый apk и начните развертывание.

Удачи

Ответ 3

Что сработало для меня

flutter build appbundle --release 

Загрузите файл appbundle

Затем увеличьте версию и номер сборки в файле pubspec.yml и запустите

flutter build appbundle --release --target-platform=android-arm64

Загрузите также этот новый appbundle.

Тогда магазин игр принял мой релиз

Ответ 4

Теперь есть новое лучшее решение, предоставленное командой futter.
Вам необходимо использовать новую версию флаттера 1.7.12. (моя настройка)

Flutter 1.7.12-pre.40 • channel master • https://github.com/flutter/flutter.git
Framework • revision 3badcf51a4 (13 hours ago) • 2019-06-28 15:14:03 -0700
Engine • revision e96900df2f
Tools • Dart 2.4.0

Затем с помощью этой команды вы можете собрать свой (одиночный) комплект приложений для x86 и x64.
flutter build appbundle

Дополнительно вы можете добавить --release --target-platform android-arm,android-arm64. Но это может привести к поломке приложения...

Ответ 5

Используйте последний мастер-канал Flutter. flutter build apk приведет к созданию толстого APK, содержащего поддержку как 32-битных, так и 64-битных.

Чтобы создать 32-битный и 64-битный APK отдельно, используйте flutter build apk --split-per-abi

Ответ 6

Столкнулся с такой же проблемой 2 дня назад. Существует похожая проблема, поднятая на GitHut флаттера, но пока нет ответа.

Ответ 8

Flutter 1.5.4 -h otfix.2 appbundle в настоящее время нацелен на android-arm, который создает только 32- flutter build appbundle -h нативный код (flutter build appbundle -h). Чтобы изменить это, запустите flutter build appbundle --target-platform=android-arm64 чтобы изменить цель по умолчанию.