У меня есть приложение для 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.