2016-05-31 2 views
0

две недели назад Я загрузил новую версию своего Android-приложения в консоль разработчика, чтобы запустить Alpha Test. Однако я не смог загрузить эту тестовую версию на своем тестовом устройстве, так как Play Store не предлагал такое обновление для моего тестового пользователя.Определение версии ABI Android Studio при использовании SDK

После того как я не смог решить эту проблему here Я напрямую связался с поддержкой Google Developer.

теперь я получил следующий ответ:

Я посмотрел в вашу проблему и обнаружил, что ваше приложение Version 15 не совместят с Nexus 5 из-за конфликт в манифесте приложения со следующим нативным платформы: armeabi, armeabi-v7a.

Для получения дополнительной информации о платформах, посетите наш сайт для разработчиков на https://developer.android.com/ndk/guides/abis.html

Это довольно запутанное. Насколько я понимаю информацию на связанной странице, настройка ABI доступна только при работе с NDK. Однако я работаю с последней версией SDK в Android Studio 2.1

ли даже можно установить/определить версию ABI при работе с SDK?

В приложении манифест не включены какие-либо настройки, связанные с версией ABI.

Когда я копирую APK вручную на свое устройство (Nexus 5 под управлением Android 4.4.4) и устанавливаю его, он работает без каких-либо проблем. Итак, APK действительно не совместим с моим устройством?

EDIT:

Вдохновленный комментарием по user1056837 Я нашел this page, который описывает, как добавить NDK блок к build.gradle файла:

android { 
    ... 

    ndk { 
     // All configurations that can be changed in android.ndk. 
     ... 
    } 

    productFlavors { 
     create("arm") { 
      ndk { 
       // You can customize the NDK configurations for each 
       // productFlavors and buildTypes. 
       abiFilters.add("armeabi-v7a") 
      } 
     } 

     create("fat") { 
      // If ndk.abiFilters is not configured, the application 
      // compile and package all suppported ABI. 
     } 
    } 
} 

В настоящее время мой build.gradle файл делает NOT включают любую конфигурацию NDK. Я не уверен, как я мог решить проблему с Play Маркет, добавив такую ​​конфигурацию.

Как я понимаю, информация на связанной странице, жир двоичный будет создан без abiFilters. Это верно?

Тогда один из следующих должно быть правильным:

  1. Мой проект делает содержать некоторый машинный код без моего ведома. В этом случае создается жирный двоичный файл, так как мой файл build.gradle делает NOT включает любую конфигурацию NDK.
  2. Мой проект не содержит содержит скрытый код. В этом случае конфигурация NDK не будет иметь никакого эффекта.

Я что-то пропустил? Независимо от того, какой случай правильный, в обоих сценариях я не знаю, какая конфигурация разрешит проблему ...

+0

App манифеста не содержит информацию о том, что поддерживает ABI, это видно только путем проверки того, какие типы родных библиотек присутствуют в файле apk (на окнах с cygwin я делаю этот однострочный файл для проверки: 'aapt l example .apk | grep .so') –

+0

Я работаю над OS X, и я не смог использовать команду 'appt'. Я попытаюсь понять это. Но, как сказано в вопросе, я не уверен, действительно ли версия ABI может быть источником проблемы. Вся информация, которую я нашел, имеет значение только при использовании с «NDK», но я использую «Java SDK». Java создает независимый от платформы байтовый код. Почему бинарная версия должна быть релевантной в этом случае? –

+0

Возможно, некоторые сторонние библиотеки добавляют к вашему приложению бинарные файлы, специфичные для архитектуры. если вы не можете найти aapt, откройте APK как zip-файл и загляните в папку * lib *, если в них есть какие-либо подпапки с .so-файлами. – ph0b

ответ

0

Может быть, это поздно, но тем не менее: У меня была такая же проблема. Это было в сторонних библиотеках. Когда мое приложение начало строить, библиотека bitcoinj создала собственный скрипт в /lib/x86_64/darwin/libscrypt.dylib folder. Я просто исключил эту папку в файле build.gradle.

packagingOptions { 
    exclude 'lib/x86_64/darwin/libscrypt.dylib' 
} 

После этого все началось отлично. Мое приложение поддерживает 5900 устройств.

Смежные вопросы