Wtyczka Androida do obsługi Gradle w wersji 3.3.0 (styczeń 2019 r.)
Ta wersja wtyczki Androida wymaga:
Wersja minimalna | Wersja domyślna | Uwagi | |
---|---|---|---|
Gradle | 4.10.1 | 4.10.1 | Więcej informacji znajdziesz w sekcji Aktualizowanie Gradle. W przypadku Gradle w wersji 5.0 i nowszych domyślny rozmiar sterty pamięci demona Gradle zmniejsza się z 1 GB do 512 MB. Może to spowodować spadek wydajności kompilacji. Aby zastąpić to ustawienie domyślne, określ rozmiar sterty demona Gradle w pliku gradle.properties projektu. |
SDK Build Tools | 28.0.3 | 28.0.3 | Zainstaluj lub skonfiguruj narzędzia do kompilacji pakietu SDK. |
Ta niewielka aktualizacja zapewnia zgodność z nowymi ustawieniami domyślnymi i funkcjami widoczności pakietu w Androidzie 11.
Szczegółowe informacje znajdziesz w informacjach o wersji 4.0.1.
3.3.2 (marzec 2019 r.)
Ta niewielka aktualizacja obsługuje Androida Studio 3.3.2 i zawiera różne poprawki błędów oraz ulepszenia działania. Listę ważnych poprawek błędów znajdziesz w odpowiednim poście na blogu o aktualizacjach.
3.3.1 (luty 2019 r.)
Ta niewielka aktualizacja obsługuje Androida Studio 3.3.1 i zawiera różne poprawki błędów oraz ulepszenia działania.
Nowe funkcje
-
Ulepszona synchronizacja ścieżki klas: podczas rozwiązywania zależności w ścieżkach klas w czasie działania i kompilacji wtyczka Androida do Gradle próbuje rozwiązać niektóre konflikty wersji zależności występujące w wielu ścieżkach klas.
Jeśli np. ścieżka klas środowiska wykonawczego zawiera bibliotekę A w wersji 2.0, a ścieżka klas kompilacji zawiera bibliotekę A w wersji 1.0, wtyczka automatycznie aktualizuje zależność w ścieżce klas kompilacji do biblioteki A w wersji 2.0, aby uniknąć błędów.
Jeśli jednak ścieżka klasy środowiska wykonawczego zawiera bibliotekę A w wersji 1.0, a kompilacja zawiera bibliotekę A w wersji 2.0, wtyczka nie obniża poziomu zależności w ścieżce klasy kompilacji do biblioteki A w wersji 1.0 i wyświetla błąd. Więcej informacji znajdziesz w artykule Rozwiązywanie konfliktów między ścieżkami klas.
-
Ulepszona przyrostowa kompilacja kodu Java podczas korzystania z procesorów adnotacji: ta aktualizacja skraca czas kompilacji dzięki ulepszeniu obsługi przyrostowej kompilacji kodu Java podczas korzystania z procesorów adnotacji.
Uwaga: ta funkcja jest zgodna z wersją Gradle 4.10.1 i nowszymi, z wyjątkiem Gradle 5.1 z powodu problemu 8194.
-
W przypadku projektów korzystających z Kapt (większość projektów tylko w Kotlinie i projektów hybrydowych Kotlin-Java): włączona jest kompilacja przyrostowa Javy, nawet jeśli używasz powiązania danych lub wtyczki retro-lambda. Przetwarzanie adnotacji przez zadanie Kapt nie jest jeszcze przyrostowe.
-
W przypadku projektów, które nie korzystają z Kapt (projekty tylko w języku Java): jeśli wszystkie używane przez Ciebie procesory adnotacji obsługują przyrostowe przetwarzanie adnotacji, przyrostowa kompilacja w języku Java jest domyślnie włączona. Aby monitorować stopniowe wdrażanie procesora adnotacji, śledź problem 5277 w Gradle.
Jeśli jednak co najmniej jeden procesor adnotacji nie obsługuje kompilacji przyrostowych, kompilacja przyrostowa w języku Java nie jest włączona. Zamiast tego możesz dodać do pliku
gradle.properties
ten flag:android.enableSeparateAnnotationProcessing=true
Gdy uwzględnisz ten flagę, wtyczka Androida do Gradle wykona procesory adnotacji w osobnym zadaniu i umożliwi przyrostowe uruchamianie zadania kompilacji Javy.
-
-
Lepsze informacje do debugowania podczas korzystania z przestarzałego interfejsu API: gdy wtyczka wykryje, że używasz interfejsu API, który nie jest już obsługiwany, może teraz podać bardziej szczegółowe informacje, które pomogą Ci określić, gdzie ten interfejs API jest używany. Aby zobaczyć dodatkowe informacje, musisz uwzględnić w pliku
gradle.properties
projektu te elementy:android.debug.obsoleteApi=true
Możesz też włączyć flagę, przekazując
-Pandroid.debug.obsoleteApi=true
z wiersza poleceń. -
Testy instrumentacji możesz uruchamiać w modułach funkcji z poziomu wiersza poleceń.
Zmiany w działaniu
-
Konfiguracja zadań wykonywanych na żądanie: wtyczka korzysta teraz z nowego interfejsu API Gradle do tworzenia zadań, aby uniknąć inicjowania i konfigurowania zadań, które nie są wymagane do ukończenia bieżącej kompilacji (lub zadań, które nie znajdują się na wykresie zadań do wykonania). Jeśli na przykład masz kilka wariantów kompilacji, takich jak „release” i „debug”, a kompilujesz wersję „debug” aplikacji, wtyczka unika inicjowania i konfigurowania zadań dla wersji „release” aplikacji.
Wywoływanie niektórych starszych metod w interfejsie Variants API, np.
variant.getJavaCompile()
, może nadal wymuszać konfigurację zadania. Aby mieć pewność, że kompilacja jest zoptymalizowana pod kątem konfiguracji zadań wykonywanych na żądanie, wywołaj nowe metody, które zamiast tego zwracają obiekt TaskProvider, np.variant.getJavaCompileProvider()
.Jeśli wykonujesz niestandardowe zadania kompilacji, dowiedz się, jak dostosować się do nowego interfejsu API Gradle do tworzenia zadań.
-
W przypadku danego typu kompilacji podczas ustawiania
useProguard false
wtyczka używa teraz R8 zamiast ProGuard do zmniejszania i zaciemniania kodu oraz zasobów aplikacji. Więcej informacji o R8 znajdziesz w tym poście na blogu dla deweloperów aplikacji na Androida. -
Szybsze generowanie klasy R w projektach bibliotek: wcześniej wtyczka Androida do obsługi Gradle generowała plik
R.java
dla każdego z zależności projektu, a następnie kompilowała te klasy R wraz z innymi klasami aplikacji. Wtyczka generuje teraz bezpośrednio plik JAR zawierający skompilowaną klasę R aplikacji, bez wcześniejszego tworzenia pośrednich klasR.java
. Ta optymalizacja może znacznie zwiększyć wydajność kompilacji w przypadku projektów, które zawierają wiele podprojektów bibliotek i zależności, a także przyspieszyć indeksowanie w Android Studio. -
Podczas tworzenia pakietu aplikacji na Androida pliki APK wygenerowane z tego pakietu aplikacji, które są kierowane na Androida 6.0 (poziom interfejsu API 23) lub nowszego, domyślnie zawierają nieskompresowane wersje bibliotek natywnych. Ta optymalizacja eliminuje konieczność kopiowania biblioteki przez urządzenie, a tym samym zmniejsza rozmiar aplikacji na dysku. Jeśli chcesz wyłączyć tę optymalizację, dodaj do pliku
gradle.properties
ten kod:android.bundle.enableUncompressedNativeLibs = false
-
Wymaga on minimalnych wersji niektórych wtyczek innych firm.
-
Synchronizacja projektu z jednym wariantem: Synchronizacja projektu z konfiguracją kompilacji to ważny krok, który pozwala Android Studio zrozumieć strukturę projektu. W przypadku dużych projektów ten proces może jednak zająć dużo czasu. Jeśli Twój projekt korzysta z wielu wariantów kompilacji, możesz teraz zoptymalizować synchronizację projektu, ograniczając ją tylko do aktualnie wybranego wariantu.
Aby włączyć tę optymalizację, musisz używać Androida Studio w wersji 3.3 lub nowszej z Android Gradle Plugin w wersji 3.3.0 lub nowszej. Gdy spełnisz te wymagania, środowisko IDE wyświetli prośbę o włączenie tej optymalizacji podczas synchronizacji projektu. Optymalizacja jest też domyślnie włączona w nowych projektach.
Aby włączyć tę optymalizację ręcznie, kliknij Plik > Ustawienia > Eksperymentalne > Gradle (Android Studio > Ustawienia > Eksperymentalne > Gradle na komputerze Mac) i zaznacz pole wyboru Synchronizuj tylko aktywny wariant.
Uwaga: ta optymalizacja w pełni obsługuje projekty, które zawierają języki Java i C++, a także częściowo obsługuje język Kotlin. Gdy włączysz optymalizację w przypadku projektów z zawartością w języku Kotlin, synchronizacja Gradle wewnętrznie powróci do używania pełnych wariantów.
-
Automatyczne pobieranie brakujących pakietów SDK: ta funkcja została rozszerzona o obsługę NDK. Więcej informacji znajdziesz w artykule Automatyczne pobieranie brakujących pakietów za pomocą Gradle.
Poprawki błędów.
-
Wtyczka Androida do obsługi Gradle w wersji 3.3.0 rozwiązuje te problemy:
- Proces kompilacji wywołuje
android.support.v8.renderscript.RenderScript
zamiast wersji AndroidX, mimo że Jetifier jest włączony. - Konflikty spowodowane przez
androidx-rs.jar
, w tym statycznie powiązaneannotation.AnyRes
- Jeśli używasz RenderScript, nie musisz już ręcznie ustawiać wersji narzędzi kompilacji w plikach
build.gradle
.
- Proces kompilacji wywołuje