Android Studio: как запустить один тест на x86

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

Когда я нажимаю на значок "Выполнить", Android Studio ВСЕГДА создает и развертывает версию "Arm" нашего продукта. Если я запустил это на эмуляторе x86, он потерпит неудачу, потому что у него нет библиотек для x86.

Кто-нибудь знает, как убедить Android Studio развернуть правильную версию для определенного эмулятора?

2 ответа

Решение

Попробуйте использовать abiFilter собственность в вашем build.gradle.

Этот пост объясняет, как использовать собственные библиотеки в разных архитектурах:

В главе Создание одного APK на архитектуру, и делать это хорошо! это говорит:

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

Попробуйте добавить это в свой gradle.build:

android{
  ...
  productFlavors {
        x86 {
            ndk {
                abiFilter "x86"
            }
        }
        mips {
            ndk {
                abiFilter "mips"
            }
        }
        armv7 {
            ndk {
                abiFilter "armeabi-v7a"
            }
        }
        arm {
            ndk {
                abiFilter "armeabi"
            }
        }
        fat
    }
}

Вам может просто понадобиться arm & x86,

После этого синхронизируйте проект с файлом Gradle, используя

Tools > Android > Sync Project with Gradle Files

Теперь вы сможете переключаться между вариантами сборки и генерировать один APK по архитектуре.

Выбрать Build Variants в левом нижнем углу. Вы должны иметь возможность переключаться между различными архитектурами в выпадающем списке Build Variant.

Надеюсь это поможет.

Во-первых, теперь есть более простой способ распространения среди других ABI без использования ароматов - это новинка для Android gradle 0.13.0 (2014/09/18) - http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits

Там это говорит: Using the new Split mechanism, building a hdpi, and an mdpi version of the same app will share a lot of the tasks (like javac, dx, proguard). Additionally, it will be considered a single variant and the same test app will be used to test every multi-apk.

Может быть, это поможет вам легче управлять тестами

Другие вопросы по тегам