Build Type — тип сборки. Он используется чтобы задать настройки сборки. По умолчанию Android Studio создает 2 типа сборки, debug и release, но в файле build.gradle прописан только один. Тип сборки debug включает в себя полезные инструменты для отладки, а также он подписан своим ключом. Тип сборки release же включает в себя оптимизацию кода через ProGuard. Но вы можете задать свои настройки для каждого из типов сборки.
Product Flavor же немного другая вещь. Он описывает версии приложения с разной функциональностью. Так например можно задать разные applicationId для платной и бесплатной версий приложения, для того чтобы они могли одновременно существовать и Google Play или быть одновременно установлены на одном устройстве. Точно так же можно задать им разные имена. В пример можно привести Age of History и Age of History Lite — две версии одной и той же игры, одна платная, а другая бесплатная.
Build Variant — вариант сборки, совмещает эти две вещи. То есть если есть 2 build type: debug и release, и 2 product flavor: normal и lite, то будет 4 варианта сборки:
- normalDebug
- normalRelease
- liteDebug
- liteRelease