Wtyczka Androida do obsługi Gradle w wersji 3.4.0 (kwiecień 2019 r.)

Ta wersja wtyczki na Androida wymaga:

3.4.3 (lipiec 2020 r.)

Ta niewielka aktualizacja zapewnia zgodność z nowymi ustawieniami domyślnymi oraz funkcje dla widoczność pakietów na Androidzie 11.

Szczegóły znajdziesz w informacjach o wersji 4.0.1.

3.4.2 (lipiec 2019 r.)

Ta niewielka aktualizacja obsługuje Androida Studio 3.4.2 i obejmuje różne błędy zawierające poprawki i ulepszenia w działaniu. Aby zobaczyć listę ważnych poprawek błędów, przeczytaj powiązany post na Blog o aktualizacjach wersji.

3.4.1 (maj 2019 r.)

Ta niewielka aktualizacja obsługuje Androida Studio 3.4.1 i obejmuje różne błędy zawierające poprawki i ulepszenia w działaniu. Aby zobaczyć listę ważnych poprawek błędów, przeczytaj powiązany post na Blog o aktualizacjach wersji.

Nowe funkcje

  • Nowe konfiguracje zależności sprawdzania lintowania: zachowanie tagu lintChecks uległo zmianie i pojawiła się nowa zależność (lintPublish) wprowadzona została konfiguracja, aby zapewnić masz większą kontrolę nad tym, które testy lint są spakowane w Androidzie biblioteki.

    • lintChecks: to jest istniejąca konfiguracja, która należy używać do kontroli lintowania, które mają być uruchamiane tylko w trakcie kompilacji w Twoim projekcie. Jeśli wcześniej witryna była przez Ciebie używana Konfiguracja zależności lintChecks z uwzględnieniem lint w opublikowanym AAR, musisz przenieść te zależności aby używać nowej konfiguracji lintPublish opisane poniżej.
    • lintPublish: użyj nowej konfiguracji w bibliotece projekty na potrzeby kontroli lintowania, które chcesz uwzględnić w opublikowanym AAR, jak pokazano poniżej. Oznacza to, że projekty zużywają oraz przeprowadzają kontrole lintowania.

    Następujący przykładowy kod korzysta z obu konfiguracji zależności w w lokalnym projekcie biblioteki Androida.

    dependencies {
      // Executes lint checks from the ':lint' project at build time.
      lintChecks project(':lint')
      // Packages lint checks from the ':lintpublish' in the published AAR.
      lintPublish project(':lintpublish')
    }
            
    dependencies {
      // Executes lint checks from the ':lint' project at build time.
      lintChecks(project(":lint"))
      // Packages lint checks from the ':lintpublish' in the published AAR.
      lintPublish(project(":lintpublish"))
        }
            
    • Ogólnie w zadaniach pakietów i podpisywania powinna pojawić się ogólna kompilacja. i szybkości działania. Jeśli zauważysz spadek skuteczności w związku z te zadania, zgłoś błąd.

Zmiany w działaniu

  • Wycofanie wtyczki funkcji aplikacji błyskawicznych na Androida Ostrzeżenie: jeśli nadal używasz tagu com.android.feature do tworzenia aplikacji błyskawicznej, Wtyczka Androida do obsługi Gradle w wersji 3.4.0 zwróci ostrzeżenie o ich wycofaniu. Aby mieć pewność, że w przyszłych wersjach nadal będzie można tworzyć aplikację błyskawiczną wtyczki, przenieś aplikację błyskawiczną na wtyczka funkcji dynamicznych, który pozwala opublikować zarówno aplikację instalowaną, jak i błyskawiczną w ramach jednego pakietu Android App Bundle.

  • R8 domyślnie włączone: R8 integruje usuwanie cukru, kurczenia, zaciemniania, optymalizacji i usuwania w jednym kroku, czego efektem cale zauważalnej wydajności kompilacji. i ulepszenia. R8 został wprowadzony we wtyczce Androida do obsługi Gradle w wersji 3.3.0, jest teraz domyślnie włączona zarówno w projektach aplikacji, jak i biblioteki na Androida używając wtyczki 3.4.0 lub nowszej.

Ilustracja poniżej przedstawia ogólny proces kompilacji przed wprowadzeniem R8.

Wcześniej ProGuard był innym etapem kompilacji niż dexing i
              odlukrzanie.

Teraz z R8, usuwanie cukru, kurczenie, zaciemnianie, optymalizacja i dexing (D8) można wykonać w jednym kroku, jak pokazano poniżej.

R8, usuwanie cukru, zmniejszanie, zaciemnianie, optymalizacja
      dexing wykonuje się w ramach jednego kroku kompilacji.

Pamiętaj, że R8 jest zaprojektowany do współpracy z istniejącymi regułami ProGuard, aby zacząć korzystać z R8, prawdopodobnie nie będzie trzeba podejmować żadnych działań. Pamiętaj jednak: bo to inna technologia niż ProGuard, która została opracowana w projektach na Androida zmniejszanie i optymalizacja mogą spowodować usunięcie kodu których może nie mieć ProGuard. W tej nieprawdopodobnej sytuacji , aby dodać więcej reguł, które pozwolą zachować ten kod w danych wyjściowych kompilacji.

Jeśli podczas korzystania z R8 napotkasz problemy, przeczytaj Najczęstsze pytania dotyczące zgodności z R8 aby sprawdzić, czy można znaleźć rozwiązanie problemu. Jeśli rozwiązanie nie jest udokumentowane, zgłoś błąd. Aby wyłączyć R8, dodaj jeden z poniższych wierszy do Plik gradle.properties:

      # Disables R8 for Android Library modules only.
      android.enableR8.libraries = false
      # Disables R8 for all modules.
      android.enableR8 = false
      
    

Uwaga: w przypadku danego typu kompilacji, jeśli ustawisz Z: useProguard do: false w Twojej aplikacji build.gradle modułu, wtyczka Androida do obsługi Gradle używa R8. aby zmniejszyć kod aplikacji pod kątem danego typu kompilacji, niezależnie od tego, czy wyłącz R8 w pliku gradle.properties projektu.

  • Usługa ndkCompile została wycofana: otrzymujesz teraz błąd kompilacji, jeśli spróbujesz użyć ndkBuild do skompilowania bibliotek natywnych. Zamiast tego użyj CMake lub ndk-build Dodaj kod C i C++ do swojej projekt.

Znane problemy

  • Prawidłowe użycie unikalnych nazw pakietów nie jest obecnie egzekwowane ale w kolejnych wersjach wtyczki będą bardziej rygorystyczne. Android wtyczki Gradle w wersji 3.4.0, możesz ją włączyć, aby sprawdzić, czy projekt deklaruje dopuszczalne nazwy pakietów, dodając poniższy wiersz do gradle.properties.

              android.uniquePackageNames = true
              
            

    Aby dowiedzieć się więcej o ustawianiu nazwy pakietu za pomocą Gradle Androida wtyczki, patrz Ustaw identyfikator aplikacji.