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

Ta wersja wtyczki na Androida wymaga:

3.3.3 (lipiec 2020 r.)

Ta drobna aktualizacja zapewnia zgodność z nowymi domyślnymi ustawieniami i funkcjami 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 w wersji 3.3.2 i zawiera różne poprawki błędów oraz ulepszenia wydajności. Listę istotnych poprawek błędów znajdziesz w odpowiednim poście na blogu o aktualizacjach wersji.

3.3.1 (luty 2019 r.)

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

Nowe funkcje

  • Ulepszona synchronizacja ścieżki klasy: podczas rozwiązywania zależności od środowiska wykonawczego i kompilowania ścieżek klasy czasowych wtyczka Androida do obsługi Gradle próbuje rozwiązać określone konflikty kolejnych wersji w odniesieniu do zależności, które występują w wielu ścieżkach klas.

    Jeśli na przykład ścieżka klasy w środowisku wykonawczym zawiera bibliotekę A w wersji 2.0, a ścieżka klasyowa kompilacji zawiera bibliotekę A w wersji 1.0, wtyczka automatycznie zaktualizuje zależność od ścieżki klasy kompilowania do biblioteki A w wersji 2.0, aby uniknąć błędów.

    Jeśli jednak ścieżka klasy w środowisku wykonawczym zawiera bibliotekę A w wersji 1.0, a kompilacja zawiera bibliotekę A w wersji 2.0, wtyczka nie obniży zależności ze ścieżki klasy kompilowania do wersji 1.0 biblioteki A i wystąpi błąd. Więcej informacji znajdziesz w artykule o rozwiązywaniu konfliktów między ścieżkami klas.

  • Ulepszona przyrostowa kompilacja Javy w przypadku korzystania z procesorów adnotacji: ta aktualizacja skraca czas kompilacji przez ulepszenie obsługi przyrostowej kompilacji Java w przypadku procesorów adnotacji.

    Uwaga: ta funkcja jest zgodna z Gradle w wersji 4.10.1 i nowszych z wyjątkiem Gradle 5.1 z powodu problemu 8194 Gradle.

    • W projektach korzystających z Kapt (większość projektów obejmujących tylko Kotlin i projektów hybrydowych Kotlin-Java): włączona jest przyrostowa kompilacja w języku Java, nawet jeśli używasz wią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 działające tylko w języku Java): jeśli procesory adnotacji, których używasz, obsługują przyrostowe przetwarzanie adnotacji, domyślnie włączona jest przyrostowa kompilacja w języku Java. Aby monitorować przyrostowe rozpowszechnienie procesora adnotacji, obejrzyj problem 5277 z Gradle.

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

      android.enableSeparateAnnotationProcessing=true
                  

      Jeśli dodasz tę flagę, wtyczka Androida do obsługi Gradle uruchamia procesory adnotacji w osobnym zadaniu i umożliwia stopniowe uruchamianie zadania kompilacji w języku Java.

  • Lepsze informacje na potrzeby debugowania przy korzystaniu z przestarzałego interfejsu API: gdy wtyczka wykryje, że używasz interfejsu API, który nie jest już obsługiwany, może podać bardziej szczegółowe informacje, które pomogą Ci określić, gdzie jest używany ten interfejs API. Aby wyświetlić dodatkowe informacje, musisz umieścić te dane w pliku gradle.properties swojego projektu:

              android.debug.obsoleteApi=true
            

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

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

Zmiany w działaniu

  • Lenina konfiguracja zadań: wtyczka korzysta teraz z nowego interfejsu Gradle interfejsu API do tworzenia zadań, aby uniknąć inicjowania i konfigurowania zadań, które nie są wymagane do ukończenia bieżącej kompilacji (lub zadań, których nie ma na wykresie zadań wykonania). Jeśli na przykład masz wiele wariantów kompilacji, takich jak „wersja” i „debugowanie”, i tworzysz wersję do debugowania, wtyczka unika inicjowania i konfigurowania zadań na potrzeby wersji „wersja”.

    Wywołanie niektórych starszych metod w interfejsie Variants API, takich jak variant.getJavaCompile(), nadal może wymuszać konfigurację zadań. 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 zastosować się do nowego interfejsu API tworzenia zadań dla Gradle.

  • W przypadku danego typu kompilacji podczas ustawiania useProguard false wtyczka używa teraz R8 zamiast ProGuard, by zmniejszać i zaciemniać kod oraz zasoby aplikacji. Więcej informacji o R8 znajdziesz w tym poście na blogu na blogu dla deweloperów aplikacji na Androida.

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

  • Gdy tworzysz pakiet Android App Bundle, pliki APK wygenerowane z tego pakietu, który jest kierowany na Androida 6.0 (poziom interfejsu API 23) lub nowszego, domyślnie zawierają nieskompresowane wersje bibliotek natywnych. Dzięki tej optymalizacji urządzenie nie będzie tworzyło kopii biblioteki, a tym samym zmniejsza rozmiar aplikacji na dysku. Jeśli wolisz wyłączyć tę optymalizację, dodaj do pliku gradle.properties ten fragment:

    android.bundle.enableUncompressedNativeLibs = false
            
  • Wtyczka wymusza stosowanie minimalnych wersji niektórych wtyczek innych firm.

  • Synchronizacja projektu z jednym wariantem: zsynchronizowanie projektu z konfiguracją kompilacji jest ważnym krokiem pozwalającym Android Studio zrozumieć strukturę projektu. W przypadku dużych projektów ten proces może być jednak czasochłonny. Jeśli Twój projekt korzysta z kilku wariantów kompilacji, możesz teraz zoptymalizować synchronizacje projektów, ograniczając je tylko do obecnie 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. Jeśli spełniasz te wymagania, IDE poprosi o włączenie tej optymalizacji podczas synchronizowania 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 > Ustawienia > Eksperymentalne > Gradle na Macu) 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 obsługuje Kotlin. Po włączeniu optymalizacji w projektach z treścią Kotlin funkcja synchronizacji Gradle wraca do wewnętrznego korzystania z 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 o automatycznym pobieraniu 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łujący metodę android.support.v8.renderscript.RenderScript zamiast wersji AndroidX mimo włączonego Jetifier
    • Przerywniki spowodowane przez: androidx-rs.jar, w tym statycznie połączone: annotation.AnyRes
    • Gdy używasz RenderScriptu, nie musisz już ręcznie ustawiać wersji narzędzi do kompilacji w plikach build.gradle