Skip to content

Commit da0e381

Browse files
committed
gradle post added
1 parent 6de8b69 commit da0e381

File tree

4 files changed

+42
-0
lines changed

4 files changed

+42
-0
lines changed

_drafts/2019-09-16-gradle.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
layout: post
3+
title: "Gradle"
4+
date: 2019-09-16
5+
categories: ["Budowanie"]
6+
image: build/gradle
7+
github: build/tree/master/gradle
8+
description: "Budowanie"
9+
keywords: "budowanie, kompilacja, konfiguracja, build, gradle, apk, properties, configuration, flavor, android, programowanie, programming"
10+
---
11+
12+
## Wstęp
13+
System budowania aplikacji `Android` kompiluje zasoby, kod źródłowy oraz pakiety do pliku w formacie `APK` (`Android Application Package`), który może być testowany, podpisany i dystrybuowany. W tym celu `Android Studio` używa zaawansowanego zestawu narzędzi `Gradle` wraz z dedykowanym `Android Gradle plugin` pozwalających na zarządzanie i automatyzację tego procesu dzięki czemu każda konfiguracja może definiować własne zasady budowania projektu. `Gradle` oraz `plugin` działają niezależnie od `Android Studio` co pozwala na kompilacje bez udziału środowiska programistycznego, np. przez wiersz poleceń.
14+
15+
## Proces
16+
Budowanie aplikacji angażuje wiele narzędzi i uruchamia różne procesy umożliwiające konwersje projektu do `APK`. Typowy proces przebiega następująco. Na początku kompilator konwertuje kod źródłowy do plików `DEX` (`Dalvik Executable`) zawierających kod bajtowy, a pozostałe pliki i zależności do skompilowanych zasobów. Następnie `APK Packager` łączy i optymalizuje pliki `DEX` i skompilowane zasoby do jednego pliku `APK` podpisując go kluczem `debug` lub `release` z `keystore`. Powstały plik `APK` jest gotowy do instalacji, debugowania czy testowania.
17+
18+
## Konfiguracja
19+
Dokonując konfiguracji budowania projektu można wyróżnić kilka aspektów wpływających na wyjściowy rezultat. `buildTypes` definiuje właściwości dla wydań (np. zaciemnienie release), `productFlavors` reprezentuje różne wersje aplikacji (np. płatna, darmowa, demo) które mogą używać współdzielonych jak i prywatnych zasobów natomiast `buildVariants` jest konkretnym wariantem budowania wynikającym z połączenia wybranych `buildTypes` i `productFlavors`. Wartości wpisów w `AndroidManifest` mogą się różnić w zależności od wariantu budowania (np. inna nazwa czy różne minSdk). System budowania zarządza także wpisami lokalnych i zdalnych zależności `dependencies` dzięki czemu nie ma potrzeby ręcznego szukania, pobierania i kopiowania pakietów zależności do projektu. Ponadto umożliwia ustawienie podpisu autentykacyjnego i zasad bezpieczeństwa `ProGuard` oraz wspiera budowanie wielu `APK`.
20+
21+
## Pliki
22+
Informacje nt konfiguracji znajdują sie w kilku plikach projektu. Używają one `DSL` (`Domain Specific Language`) do opisania i manipulowania logiką przy pomocy `Groovy` (dynamicznego języka dla `JVM`). `Android Gradle plugin` dostarcza większość potrzebnych elementów `DSL` w związku z czym nie jest wymagana wiedza programowania w `Groovy`. Kod źródłowy i zasoby powinny być logicznie pogrupowane zgodnie z przynależnością do modułu, tzn. kod oraz zasoby znajdujące się w `src/main` są współdzielone przez wszystkie warianty kompilacji, natomiast np. `src/debug` tylko dla wariantu debug.
23+
24+
`settings.gradle` deklaruje moduły, które powinny wziąć udział w procesie budowania projektu
25+
26+
//TODO
27+
28+
`build.gradle` znajdujący się w głównym katalogu definuje konfigurację wspólną dla wszystkich modułów w projekcie
29+
30+
//TODO
31+
32+
`build.gradle` znajdujący się w każdym module pozwala na specyficzną konfiguracje dla danego modułu uzupełniając lub nadpisując definicję `build.gradle` projektu
33+
34+
//TODO
35+
36+
`gradle.properties` określa ustawienia Gradle dla całego projektu, takie jak np. maksymalna wielkość stosu demona Gradle
37+
38+
//TODO
39+
40+
`local.properties` konfiguruje lokalne właściwości środowiska dla systemu kompilacji, takie jak np. ścieżka instalacji SDK
41+
42+
//TODO

assets/img/posts/build/gradle.jpg

431 KB
Loading
18.5 KB
Loading
47.7 KB
Loading

0 commit comments

Comments
 (0)