Поддержка 64-битной дает ошибку при добавлении ndk.abiFilters в build.gradle

71
9

Большинство разработчиков Android должны получить сообщение от Google об обновлении приложений для поддержки 64-битной архитектуры к августу 2019 года. Подробные инструкции приведены здесь: Убедитесь, что ваше приложение поддерживает 64-битные устройства.

В моем приложении я обнаружил, что используются 32-битные библиотеки, и поэтому я должен обновить приложение для поддержки 64-битной архитектуры. Как указано в руководстве выше, я добавил следующее в файл build.gradle:

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

Однако после этого я получаю следующую ошибку при создании приложения:

Ошибка: (35, 0) Не удалось найти метод armeabi-v7a() для аргументов [arm64-v8a] в DefaultConfig_Decorated {name = main, dimension = null, minSdkVersion = DefaultApiVersion {mApiLevel = 16, mCodename = 'null'}, targetSdkVersion = DefaultApiVersion {mApiLevel = 28, mCodename = 'null'}, renderscriptTargetApi = null, renderscriptSupportModeEnabled = null, renderscriptSupportModeBlasEnabled = null, renderscriptNdkModeEnabled = null, тестовая версия = null, тестовая версия = {}, testHandleProfiling = null, testFunctionalTest = null, signatureConfig = null, resConfig = null, mBuildConfigFields = {}, mResValues = {}, mProguardFiles = [], mConsumerProguardFiles = [], mManifestnWW введите com.android.build.gradle.internal.dsl.DefaultConfig.

Кто-нибудь уже пробовал обновить приложение до 64-битной версии? Есть идеи, как решить эту проблему?

спросил(а) 2020-04-04T02:21:45+03:00 5 месяцев, 4 недели назад
1
Решение
105

Это можно сделать, обновив сборку gradle defaultConfig

defaultConfig {
applicationId "my.test.64bitapp"
minSdkVersion 15
targetSdkVersion 26
versionCode 42
versionName "1.0.2"
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
ndk.abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86' ,'x86_64'
}

или же

defaultConfig {
applicationId "com.swypmedia"
minSdkVersion 16
targetSdkVersion 26
versionCode 2
versionName "2.0.2"
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86' ,'x86_64'
}
}

Я проверил это на Android-родной и реагировать-родной приложение. сборка прошла успешно и приложение работало.

ответил(а) 2020-04-04T02:37:12.477498+03:00 5 месяцев, 4 недели назад
40

Согласно NdkOptions abiFilters определяется как Set<String>

Set<String> abiFilters

В groovy Set инициализируется с использованием приведенного ниже синтаксиса (если вы хотите использовать оператор ' = '):

Set<String> mySet = ["armeabi-v7a", "arm64-v8a", "x86", "x86_64"] 

ответил(а) 2020-04-04T02:21:45+03:00 5 месяцев, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема