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 artykule o aktualizowaniu Gradle. Gdy używasz Gradle w wersji 5.0 lub nowszej, domyślny rozmiar sterty pamięci demona Gradle zmniejsza się z 1 GB do 512 MB. Może to spowodować pogorszenie wydajności kompilacji. Aby zastąpić to ustawienie domyślne, określ rozmiar sterty demona Gradle w pliku gradle.properties projektu.
Narzędzia do kompilacji pakietu SDK 28.0.3 28.0.3 Zainstaluj lub skonfiguruj narzędzia do kompilacji pakietu SDK.

3.3.3 (lipiec 2020 r.)

Ta drobna aktualizacja zapewnia zgodność z nowymi ustawieniami domyślnymi i funkcjami dotyczącymi widoczności pakietów w Androidzie 11.

Szczegóły znajdziesz w informacjach o wersji 4.0.1.

3.3.2 (marzec 2019 r.)

Ta drobna aktualizacja obsługuje Androida Studio 3.3.2 i zawiera różne poprawki błędów oraz ulepszenia wydajności. Listę ważnych poprawek błędów znajdziesz w powiązanym poście na blogu Release Updates.

3.3.1 (luty 2019 r.)

Ta drobna aktualizacja obsługuje Androida Studio 3.3.1 i zawiera różne poprawki błędów oraz ulepszenia wydajności.

Nowe funkcje

  • Ulepszona synchronizacja ścieżki klas: podczas rozwiązywania zależności w ścieżkach klas w czasie działania i czasie kompilowania wtyczka Androida do obsługi Gradle próbuje rozwiązać niektóre konflikty wersji zależności, które występują w wielu ścieżkach klas.

    Jeśli na przykład ścieżka klas w czasie działania zawiera bibliotekę A w wersji 2.0, a ścieżka klas w czasie kompilacji zawiera bibliotekę A w wersji 1.0, wtyczka automatycznie aktualizuje zależność w ścieżce klas w czasie kompilacji do biblioteki A w wersji 2.0, aby uniknąć błędów.

    Jeśli jednak ścieżka klas w czasie działania zawiera bibliotekę A w wersji 1.0, a ścieżka klas w czasie kompilacji zawiera bibliotekę A w wersji 2.0, wtyczka nie obniża wersji zależności w ścieżce klas w czasie kompilacji do biblioteki A w wersji 1.0 i wyświetli się 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 Gradle w wersji 4.10.1 i nowszej, z wyjątkiem Gradle w wersji 5.1 z powodu problemu 8194 w Gradle.

    • W przypadku projektów korzystających z Kapt (większość projektów tylko w Kotlinie i projektów hybrydowych Kotlin-Java): przyrostowa kompilacja kodu Java jest włączona nawet wtedy, gdy 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 Javie): jeśli wszystkie używane procesory adnotacji obsługują przyrostowe przetwarzanie adnotacji, przyrostowa kompilacja kodu Java jest domyślnie włączona. Aby śledzić wdrażanie przyrostowego procesora adnotacji, obserwuj problem 5277 w Gradle.

      Jeśli jednak co najmniej 1 procesor adnotacji nie obsługuje kompilacji przyrostowych , przyrostowa kompilacja kodu Java nie jest włączona. Zamiast tego możesz dodać do pliku gradle.properties ten flagę:

      android.enableSeparateAnnotationProcessing=true
                  

      Gdy dodasz tę flagę, wtyczka Androida do obsługi Gradle wykonuje procesory adnotacji w osobnym zadaniu i umożliwia przyrostowe wykonywanie zadania kompilacji kodu Java.

  • Lepsze informacje o debugowaniu 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 dodać do pliku projektu gradle.properties ten kod:

              android.debug.obsoleteApi=true
            

    Flagę możesz też włączyć, przekazując -Pandroid.debug.obsoleteApi=true z wiersza poleceń.

  • Testy instrumentacji możesz uruchamiać w modułach funkcji z wiersza poleceń.

Zmiany w zachowaniu

  • Konfiguracja zadań leniwych: wtyczka używa teraz 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ń wykonywanych). Jeśli na przykład masz kilka wariantów kompilacji, takich jak „release” i „debug”, i kompilujesz wersję „debug” aplikacji, wtyczka unika inicjowania i konfigurowania zadań dla wersji „release” aplikacji.

    Wywoływanie niektórych starszych metod w interfejsie API wariantów, takich jak variant.getJavaCompile(), może nadal wymuszać konfigurację zadań. Aby mieć pewność że kompilacja jest zoptymalizowana pod kątem konfiguracji zadań leniwych, wywołuj 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 rodzaju kompilacji, gdy ustawisz useProguard false, wtyczka używa teraz R8 zamiast ProGuard do zmniejszania i zaciemniania kodu i zasobów aplikacji. Więcej informacji o R8 znajdziesz w tym poście na blogu dla deweloperów Androida.

  • Szybsze generowanie klasy R w przypadku projektów bibliotek: wcześniej wtyczka Androida do obsługi Gradle generowała plik R.java dla każdej zależności projektu, a następnie kompilowała te klasy R razem z innymi klasami aplikacji. Wtyczka generuje teraz bezpośrednio plik JAR zawierający skompilowaną klasę R aplikacji bez wcześniejszego tworzenia pośrednich R.java klas. Ta optymalizacja może znacznie zwiększyć wydajność kompilacji w przypadku projektów, które zawierają wiele podprojektów i zależności bibliotek, oraz przyspieszyć indeksowanie w Androidzie Studio.

  • Podczas tworzenia pakietu Android App Bundle pliki APK generowane z tego pakietu aplikacji, które są przeznaczone na Androida 6.0 (poziom interfejsu API 23) lub nowszego, domyślnie zawierają nieskompresowane wersje bibliotek natywnych. Ta optymalizacja eliminuje konieczność tworzenia kopii biblioteki przez urządzenie, co zmniejsza rozmiar aplikacji na dysku. Jeśli chcesz wyłączyć tę optymalizację, dodaj do pliku gradle.properties ten kod:

    android.bundle.enableUncompressedNativeLibs = false
            
  • Wtyczka wymusza minimalne wersje niektórych wtyczek innych firm.

  • Synchronizacja projektu z jednym wariantem: synchronizowanie projektu z konfiguracją kompilacji jest ważnym krokiem, który pozwala Androidowi Studio zrozumieć strukturę projektu. W przypadku dużych projektów ten proces może jednak być czasochłonny. Jeśli projekt używa 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 wtyczką Androida do obsługi Gradle w wersji 3.3.0 lub nowszej. Gdy spełnisz te wymagania, IDE wyświetli prośbę o włączenie tej optymalizacji podczas synchronizacji projektu. Optymalizacja jest też domyślnie włączona w nowych projektach.

    Aby ręcznie włączyć tę optymalizację, kliknij Plik > Ustawienia > Eksperymentalne > Gradle (Android Studio > Preferencje > Eksperymentalne > Gradle na Macu) i zaznacz pole wyboru Synchronizuj tylko aktywny wariant.

    Uwaga: ta optymalizacja w pełni obsługuje projekty, które zawierają kod w językach Java i C++, oraz częściowo obsługuje język Kotlin. Gdy włączysz optymalizację w projektach z treściami w Kotlinie, synchronizacja Gradle 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 tym, że androidx-rs.jar zawiera statycznie powiązany element annotation.AnyRes.
    • Gdy używasz RenderScript, nie musisz już ręcznie ustawiać wersji narzędzi do kompilacji w plikach build.gradle.