Tworzenie BuildVariants poprzez Gradle krok po kroku

Tworzenie BuildVariants poprzez Gradle krok po kroku

Podczas tworzenia aplikacji nieraz zdarza się, że w pewnym momencie chcemy uzyskać kilka wersji naszej aplikacji, które różnią się mniej lub bardziej istotnymi detalami. Aby w łatwy sposób stworzyć różne wersje aplikacji, wystarczy dokonać kilku zmian w Gradle.

Wersje aplikacji z Gradle – jakie mamy możliwości?

Android Studio wraz z Gradle wspiera tworzenie różnych wersji aplikacji poprzez dodawanie kolejnych BuildTypes i ProductFlavors. Ale zanim powiemy sobie więcej o tym, warto wspomnieć o jakich różnych wersjach mowa. Możemy np. chcieć uzyskać wersję, które różnią się applicationId, minimalną wspieraną wersją SDK, podpisane bądź nie. Nasze wersje mogą się również różnić wewnętrznie wykorzystywanymi parametrami, jak choćby wykorzystywany url do API.

BuildTypes – różne rodzaje

Przy tworzeniu projektu w AndroidStudio w Gradle mamy domyślnie 2 rodzaje dla BuildTypes: debug i release. Te typy odnoszą się do szeregu ustawień podczas budowania projektu. To jednocześnie dobre miejsce do zdefiniowania np. lokalizacji i nazwy generowanych buildów:

buildTypes {
release {
applicationVariants.all { variant ->
variant.outputs.each { output ->
def file = output.outputFile
output.outputFile = new File(file.parent, "releaseBuildHeader" + defaultConfig.versionName + ".apk")
}
}
}
debug { (...) }
}

ProductFlavors

ProductFlavors z kolei umożliwia nam definiowanie parametrów wykorzystywanych w kodzie aplikacji. Można tu jednocześnie np. rozróżniać minSdkVersion. Poniżej przedstawiony przykład pokazuje, jak odróżnić między sobą wersje poprzez różne adresy URL do API, z których jedno wymaga certyfikatu, a drugie nie:

productFlavors {
live {
applicationId 'pl.holdapp.testapp'
buildConfigField 'String', 'API_URL', '"https://some-api-url.com"'
buildConfigField 'boolean', 'NEED_CERTIFICATE', "false"
}
dev {
applicationId 'pl.holdapp.testapp.dev'
buildConfigField 'String', 'API_URL', '"https://another-api-url.com"'
buildConfigField 'boolean', 'NEED_CERTIFICATE', "true"
}
}

Jak widać posługujemy się tutaj buildConfigField, gdzie podajemy kolejno ‘typ definiowanej stałej’, ‘nazwę’ oraz ‘wartość’. No dobrze, lecz zostało jeszcze pytanie, jak z tej wartości skorzystać wewnątrz kodu naszej aplikacji? Jak się okazuje, jest to równie proste. Wystarczy w kodzie odwołać się do stałej w następujący sposób:

if (BuildConfig.NEED_CERTIFICATE)
okHttpBuilder.sslSocketFactory((sslContext.getSocketFactory()));

W efekcie posiadanych BuildTypes i ProductFlavors po zsynchronizowaniu projektu (po zmianach wprowadzonych w Gradle), utworzyły nam się cztery BuildVariants:

W efekcie możemy swobodnie przełączać się między wariantami, aby utworzyć odpowiednią wersję aplikacji. I to przy minimalnym wysiłku. To bardzo praktyczne i pomocne rozwiązanie, które może zaoszczędzić sporo czasu.

Android Developer Dominika

Dominika Zięba

Android Developer

Wycena projektu

Opowiedz nam o swoim projekcie i napisz, jak możemy Ci pomóc.

Dlaczego warto rozwijać z nami projekty?

Logo Mobile Trends Awards

Mobile Trends Awards 2021

Wygrana w kategorii
ŻYCIE CODZIENNE

Nagroda Legalnych Bukmacherów

Nagroda Legalnych Bukmacherów 2019

Najlepsza aplikacja mobilna

Mobile Trends Awards logo

Mobile Trends Awards 2023

Wygrana w kategorii
MCOMMERCE ROZWÓJ

23

opinie klientów

Clutch logo