Wtyczka Androida do obsługi Gradle 3.3.0 (styczeń 2019 r.)

Ta wersja wtyczki na Androida wymaga:

Minimalna wersja Wersja domyślna Uwagi
Gradle 4.10.1 4.10.1 Więcej informacji znajdziesz w artykule Aktualizowanie Gradle. W Gradle 5.0 i nowszych wersjach domyślny rozmiar stosu 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 stosu demona Gradle w pliku gradle.properties projektu.
Narzędzia do kompilowania pakietu SDK 28.0.3 28.0.3 Zainstaluj lub skonfiguruj narzędzia do kompilowania pakietu SDK.

3.3.3 (lipiec 2020 r.)

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

Szczegółowe informacje znajdziesz w informacjach o wersji 4.0.1.

3.3.2 (marzec 2019 r.)

Ta drobna aktualizacja obsługuje Android Studio 3.3.2 i zawiera różne poprawki błędów oraz ulepszenia działania aplikacji. Aby zobaczyć listę istotnych poprawek błędów, przeczytaj odpowiedni post na blogu z aktualnościami dotyczącymi wersji.

3.3.1 (luty 2019 r.)

Ta drobna aktualizacja obsługuje Android Studio 3.3.1 i zawiera różne poprawki błędów oraz ulepszenia działania aplikacji.

Nowe funkcje

  • Ulepszona synchronizacja ścieżki klas: podczas rozwiązywania zależności w czasie wykonywania i kompilowania ścieżki klas, wtyczka Gradle dla Androida próbuje naprawić niektóre konflikty wersji w dół łańcucha dostawy dla zależności, które występują w wielu ścieżkach klas.

    Jeśli na przykład classpath w czasie wykonywania zawiera bibliotekę A w wersji 2.0, a classpath kompilacji zawiera bibliotekę A w wersji 1.0, w celu uniknięcia błędów wtyczka automatycznie aktualizuje zależność w classpath kompilacji do biblioteki A w wersji 2.0.

    Jeśli jednak classpath środowiska wykonawczego zawiera bibliotekę A w wersji 1.0, a kompilacja zawiera bibliotekę A w wersji 2.0, wtyczka nie obniża zależności w classpath kompilacji do biblioteki A w wersji 1.0, co spowoduje błąd. Więcej informacji znajdziesz w artykule Rozwiązywanie konfliktów między ścieżkami klas.

  • Ulepszona stopniowa kompilacja Javy przy użyciu procesorów adnotacji: ta aktualizacja skraca czas kompilacji dzięki ulepszonym funkcjom obsługi stopniowej kompilacji Javy przy użyciu procesorów adnotacji.

    Uwaga: ta funkcja jest zgodna z Gradle 4.10.1 i nowszymi wersjami, z wyjątkiem Gradle 5.1 z powodu problemu Gradle 8194.

    • W przypadku projektów korzystających z Kapt (większość projektów tylko w Kotlinie i hybrydowych projektów w Kotlinie i Java): skompilowanie Java jest włączone, 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 używane przez Ciebie procesory adnotacji obsługują kompilację adnotacji stopniowej, kompilacja stopniowa w języku Java jest domyślnie włączona. Aby śledzić stosowanie procesora adnotacji, sprawdź problem Gradle 5277.

      Jeśli jednak co najmniej 1 procesor adnotacji nie obsługuje kompilacji przyrostowych, kompilacja przyrostowa Javy nie jest włączona. Zamiast tego możesz umieścić w pliku gradle.properties ten parametr:

      android.enableSeparateAnnotationProcessing=true
                  

      Gdy dodasz ten parametr, wtyczka Gradle dla Androida wykona procesory adnotacji w ramach osobnego zadania i umożliwi stopniowe wykonywanie zadania kompilacji kodu Java.

  • Bardziej szczegółowe informacje 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 wyświetlić bardziej szczegółowe informacje, które pomogą Ci określić, gdzie jest on używany. Aby wyświetlić dodatkowe informacje, musisz uwzględnić w pliku gradle.properties projektu:

              android.debug.obsoleteApi=true
            

    Możesz też włączyć tę flagę, podając parametr -Pandroid.debug.obsoleteApi=true w wierszu poleceń.

  • Testy instrumentacji możesz przeprowadzać na modułach funkcji z poziomu wiersza poleceń.

Zmiany w zachowaniu

  • Konfiguracja zadania opóźnionego: wtyczka używa teraz nowego interfejsu API do tworzenia zadań Gradle, 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 diagramie zadań wykonania). Jeśli na przykład masz kilka wariantów kompilacji, np. „wersja produkcyjna” i „wersja debugująca”, a kompilujesz wersję „debugującą” aplikacji, wtyczka nie inicjuje ani nie konfiguruje zadań dotyczących wersji „produkcyjnej” aplikacji.

    Wywoływanie niektórych starszych metod w interfejsie Variants API, takich jak variant.getJavaCompile(), może nadal wymuszać konfigurację zadania. Aby mieć pewność, że kompilacja jest zoptymalizowana pod kątem konfiguracji leniwego zadania, wywołaj nowe metody, które zamiast tego zwracają obiekt TaskProvider, taki jak variant.getJavaCompileProvider().

    Jeśli wykonujesz niestandardowe zadania kompilacji, dowiedz się, jak dostosować się do nowego interfejsu API do tworzenia zadań Gradle.

  • W przypadku danego typu kompilacji, gdy ustawisz useProguard false, wtyczka będzie teraz używać R8 zamiast ProGuarda do kompresji i zaciemnienia 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 przypadku projektów bibliotek: wcześniej wtyczka Gradle dla Androida generowała plik R.java dla każdej zależności projektu, a następnie kompilowała te klasy R wraz z innymi klasami aplikacji. Wtyczka generuje teraz plik JAR zawierający bezpośrednio skompilowaną klasę R aplikacji, bez wcześniejszego tworzenia klas pośrednich R.java. Ta optymalizacja może znacznie poprawić 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 kompilowania pakietu aplikacji na Androida pliki APK wygenerowane na podstawie tego pakietu aplikacji, które są kierowane na Androida 6.0 (poziom interfejsu API 23) lub nowszego, zawierają teraz domyślnie nieskompresowane wersje bibliotek natywnych. Dzięki tej optymalizacji urządzenie nie musi tworzyć kopii biblioteki, co zmniejsza rozmiar aplikacji na dysku. Jeśli chcesz wyłączyć tę optymalizację, dodaj do pliku gradle.properties następujący kod:

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

  • Synchronizacja projektu z jednym wariantem: synchronizowanie projektu z konfiguracją kompilacji to ważny krok, który pozwala Android Studio zrozumieć strukturę projektu. W przypadku dużych projektów może to jednak zająć dużo czasu. Jeśli projekt używa wielu wersji kompilacji, możesz zoptymalizować synchronizację projektu, ograniczając ją tylko do wariantu, który jest obecnie wybrany.

    Aby włączyć tę optymalizację, musisz używać Android Studio 3.3 lub nowszej wersji z wtyczką Android Gradle 3.3.0 lub nowszą. Gdy spełniasz te wymagania, IDE wyświetli prompt z prośbą o włączenie tej optymalizacji podczas synchronizowania projektu. Optymalizacja jest też domyślnie włączona w przypadku nowych projektów.

    Aby ręcznie włączyć tę optymalizację, kliknij Plik > Ustawienia > Eksperymentalne > Gradle (na Macu Android Studio > Ustawienia > Eksperymentalne > Gradle) i zaznacz pole wyboru Tylko synchronizacja aktywnej wersji.

    Uwaga: ta optymalizacja w pełni obsługuje projekty, które obejmują języki Java i C++, oraz częściowo obsługuje Kotlin. Po włączeniu optymalizacji w przypadku projektów z treściami w Kotlinie synchronizacja Gradle automatycznie używa pełnych wersji wewnętrznych.

  • 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.RenderScriptzamiast wersji AndroidX, mimo włączenia Jetifiera;
    • Konflikty spowodowane przez androidx-rs.jar, w tym statycznie połączone annotation.AnyRes
    • Gdy używasz RenderScript, nie musisz już ręcznie ustawiać wersji narzędzi do kompilacji w plikach build.gradle.