TGViewer
Android Broadcast Android Broadcast @android_broadcast · 14.6K subscribers
Post #8625 8.92K
Все мы уже привыкли выкладывать сборки в Google Play через AAB, которые передаст на устройство только необходимое для устройства нативные библиотеки. Некоторым приходится раздавать сборку в APK формате. Банальный кейс - отдавать сборку на проверку QA.

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

Android Gradle плагин позволяет указать какие ABI нужно добавлять в сборку. Сложность в том, что для финальной сборки обычно надо добавить ABI arm64-v8a и armeabi-v7a, а вот для Intel эмуляторов нужны x86 и x86-64. Чтобы делать это эффективно, я делал механизм передачи значений ABI через переменные при сборке. Это позволяет задавать локально и на CI разные значения, а локальные задавать через файл local.properties или переменную окружения

// Код в Gradle KTS скрипте
fun resolveAbiFilters(): List<String> {
val abisString =
project.findProperty("abiFilter") as String? // Параметр командной строки
?: readFromLocalProperties("abi.filter") // Значение из local.properties
?: System.getenv("ABI_FILTER") // Переменная окружения

return abisString?.split(",") ?: emptyList()
}

fun readFromLocalProperties(key: String): String? {
val localPropertiesFile = rootProject.file("local.properties")
if (!localPropertiesFile.exists()) return null

val localProperties = Properties().apply {
localPropertiesFile.inputStream().use(::load)
}
return localProperties.getProperty(key)
}


// В Android application модуле указываем
android {
defaultConfig {
ndk {
abiFilters = resolveAbiFilters()
}
}
}


Пример задания через параметр
./gradlew assembleRelease -PabiFilter=arm64-v8a,armeabi-v7a


Если вы запускаете приложения из Android Studio на устройстве/эмуляторе, то IDE понимает какую ABI из поддерживаемых стоит включить в APK, чтобы приложение смогло работать. Все остальные исключается. Сборка компактнее - меньше время на передачу и установку тестового билда.

#android #gradle #ndk
  • 👍 48
  • 🔥 10
  • ❤ 2
More from @android_broadcast
  1. Oct 16, 2026🔨 В Android Studio Rabbit 2 можно выкладывать билд на тестовый трек Play прямо из IDE В к…
  2. Oct 16, 2026🤖 DexSQL: SQL-запросы к APK и DEX, а для агентов есть MCP Команда LSPosed выпустила DexSQ…
  3. Oct 15, 2026🤖 Android прячет логины в WebView при показе экрана и запрещает приложениям тихо включать…
  4. Oct 14, 2026#видеозаписи #МобильныйВторник Осенний Mobius — уже на следующей неделе! А сегодня мы откр…
  5. Oct 14, 2026🔐 Волна утечек в Японии: эндпоинты и ключи API достают из публичных приложений 8 октября…
  6. Oct 14, 2026🛒 Google Play: свои вайб-код приложения можно ставить на устройство без аккаунта разработ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →