Как заставить AndroidStudio создавать все ABI при запуске приложения? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть приложение для Android, которое использует библиотеки JNI и поддерживает все интерфейсы ABI для Android.

Когда я нажимаю «запустить» из AndroidStudio, оно только собирает библиотеки, ориентированные на ABI устройства по умолчанию (x86_64 наэмулятор или arm64-v8a на устройстве).

Я хочу отключить эту оптимизацию и построить все ABI при запуске, как я могу это сделать?


Контекст:

Поведение по умолчанию имеет смысл для большинства приложений, но мое приложение действует как плагин и динамически загружается в другие приложения, некоторые из которых только 32-битные - поэтому мне нужно несколько ABI, встроенных в APK.

Кроме того, в рамках моего модульного теста я связываю someapp-x86.apk, someapp-x86_64.apk и т. Д. В качестве ресурсов тестового модуля и автоматически устанавливает и выполняет его как часть теста.

    def copyApkTask = task ("copy${testVariant.name.capitalize()}ApkAssets", type: Copy) {
        from tasks.getByPath(':someApp:packageArmeabi_v7aDebug')
        from tasks.getByPath(':someApp:packageArm64_v8aDebug')
        from tasks.getByPath(':someApp:packageX86Debug')
        from tasks.getByPath(':someApp:packageX86_64Debug')

        into assetTask.outputDir
        include '*.apk'
    }

Это будет отлично работать при автономном запуске gradle, но не работает с AndroidStudio с ошибкой

Невозможно построить для ABI: поддерживаемые x86 ABI: arm64-v8a


Я пытался выяснить это, и все, что я мог найти, это ExternalNativeBuildTask.java # 321 .К сожалению, это похоже на более старую версию плагина gradle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...