TGViewer
Kotlin | Вопросы собесов Kotlin | Вопросы собесов @easy_kotlin · 2.45K subscribers
Post #2183 298
🤔 Как собираем код?

Сборка Android-приложения проходит несколько этапов:
Компиляция (.kt/.java → .class → .dex)
Объединение ресурсов (XML, PNG → R.java)
Сборка APK/AAB
Подписывание и оптимизация
Установка и запуск на устройстве

🚩Компиляция кода (`.kt/.java → .dex`)

Компиляция Kotlin/Java в байткод JVM (.class)
Kotlin-код (.kt) → Java-байткод (.class)
Java-код (.java) → .class
- Используются компиляторы:
- kotlinc (Kotlin Compiler)
- javac (Java Compiler)
// Kotlin-код (MainActivity.kt)
fun main() {
println("Привет, Android!")
}

kotlinc MainActivity.kt -d MainActivity.class


Преобразование .class в `.dex*
Android не использует байткод JVM, а преобразует .class в Dalvik Executable (.dex).
d8 MainActivity.class --output classes.dex


🚩Компиляция ресурсов (`XML, PNG → R.java → .dex`)

Android Gradle Plugin (AGP) обрабатывает ресурсы
- res/layout/*.xml → UI файлы
- res/drawable/*.png → Иконки
- AndroidManifest.xml → Метаинформация
public final class R {
public static final class layout {
public static final int activity_main = 0x7f0a0000;
}
}


🚩Сборка APK/AAB

APK (старый формат) и AAB (новый формат Google Play)
classes.dex + res/ + AndroidManifest.xml объединяются
Проходит обфускация (ProGuard / R8)
APK/AAB упаковывается в ZIP-архив
zipalign -v 4 app.apk signed_app.apk


🚩Подписывание и оптимизация

APK/AAB должен быть подписан перед установкой
apksigner sign --ks my-release-key.jks --out signed_app.apk app-release.apk


Установка и запуск
adb install signed_app.apk
adb shell am start -n com.example.app/.MainActivity


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 1
More from @easy_kotlin
  1. Oct 9, 2026🤔 В чем разница между linked list и array list? Являются двумя различными типами коллекци…
  2. Oct 8, 2026🤔 Для проектов в которых есть несколько модулей, там может быть много Android Manifest'ов…
  3. Oct 7, 2026🤔 Что такое ProGuard? ProGuard — это инструмент для: - Минификации (сжатие имён классов,…
  4. Oct 7, 2026🤔 Расскажи подробно, что из себя представляет каждый компонент Аndroid-приложения? Androi…
  5. Oct 7, 2026🔥 Скрытые вакансии с удаленной работой для Android разработчика, которые нигде больше не…
  6. Oct 6, 2026🤔 Что известно про генерации Young, Old в GC? - Young Generation: - Содержит новые объект…
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 →