Wtyczka Androida do obsługi Gradle w wersji 3.4.0 (kwiecień 2019 r.)
Ta wersja wtyczki Androida wymaga:
Wersja minimalna | Wersja domyślna | Uwagi | |
---|---|---|---|
Gradle | 5.1.1 | 5.1.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.4.2 (lipiec 2019 r.)
Ta niewielka aktualizacja obsługuje Androida Studio 3.4.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.4.1 (maj 2019 r.)
Ta niewielka aktualizacja obsługuje Androida Studio 3.4.1 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.
Nowe funkcje
-
Nowe konfiguracje zależności sprawdzania lint: działanie
lintChecks
uległo zmianie, a nowa konfiguracja zależnościlintPublish
została wprowadzona, aby zapewnić Ci większą kontrolę nad tym, które sprawdzania lint są pakowane w bibliotekach Androida.-
lintChecks
: jest to istniejąca konfiguracja, której należy używać do sprawdzania kodu, które mają być uruchamiane tylko podczas lokalnego kompilowania projektu. Jeśli dołączasz do opublikowanego pliku AAR testy lint za pomocą konfiguracji zależnościlintChecks
, musisz przenieść te zależności, aby zamiast tego używać nowej konfiguracjilintPublish
opisanej poniżej. -
lintPublish
: Użyj tej nowej konfiguracji w projektach biblioteki do sprawdzania kodu za pomocą narzędzia lint, które chcesz uwzględnić w opublikowanym pliku AAR, jak pokazano poniżej. Oznacza to, że projekty, które korzystają z Twojej biblioteki, również stosują te testy.
Poniższy przykładowy kod korzysta z obu konfiguracji zależności 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 zadania związane z pakowaniem i podpisywaniem powinny być wykonywane szybciej. Jeśli zauważysz spadek wydajności związany z tymi zadaniami, zgłoś błąd.
-
Zmiany w działaniu
-
Wycofanie wtyczki funkcji aplikacji błyskawicznych na Androida: ostrzeżenie: jeśli do tworzenia aplikacji błyskawicznej nadal używasz wtyczki
com.android.feature
, wtyczka Androida do obsługi Gradle w wersji 3.4.0 będzie wyświetlać ostrzeżenie o wycofaniu. Aby mieć pewność, że w przyszłych wersjach wtyczki nadal będzie można tworzyć aplikację błyskawiczną, przenieś ją do wtyczki z funkcjami dynamicznymi. Umożliwia ona też publikowanie zarówno wersji instalowanej, jak i błyskawicznej aplikacji z poziomu jednego pakietu Android App Bundle. -
R8 włączony domyślnie: R8 integruje usuwanie cukru syntaktycznego, zmniejszanie rozmiaru, zaciemnianie, optymalizację i indeksowanie DEX w jednym kroku, co skutkuje znaczną poprawą wydajności kompilacji. Narzędzie R8 zostało wprowadzone we wtyczce Androida do obsługi Gradle w wersji 3.3.0 i jest teraz domyślnie włączone w przypadku projektów aplikacji i bibliotek Androida, które korzystają z wtyczki w wersji 3.4.0 lub nowszej.
Obraz poniżej przedstawia ogólny proces kompilacji przed wprowadzeniem R8.

W przypadku R8 usuwanie składni, zmniejszanie, zaciemnianie, optymalizacja i indeksowanie (D8) są wykonywane w jednym kroku, jak pokazano poniżej.

Pamiętaj, że R8 jest zaprojektowany do współpracy z dotychczasowymi regułami ProGuard, więc prawdopodobnie nie musisz nic robić, aby korzystać z R8. Jest to jednak inna technologia niż ProGuard, zaprojektowana specjalnie z myślą o projektach na Androida, więc zmniejszanie i optymalizacja mogą spowodować usunięcie kodu, którego ProGuard nie usunąłby. W takiej mało prawdopodobnej sytuacji może być konieczne dodanie dodatkowych reguł, aby zachować ten kod w danych wyjściowych kompilacji.
Jeśli masz problemy z używaniem R8, przeczytaj najczęstsze pytania dotyczące zgodności R8, aby sprawdzić, czy istnieje rozwiązanie Twojego problemu. Jeśli rozwiązanie nie jest udokumentowane, zgłoś błąd.
Aby wyłączyć R8, dodaj jeden z tych wierszy do pliku gradle.properties
projektu:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
Uwaga: jeśli w pliku build.gradle
modułu aplikacji ustawisz wartość useProguard
na false
, wtyczka Androida do obsługi Gradle będzie używać R8 do zmniejszania kodu aplikacji w przypadku danego typu kompilacji, niezależnie od tego, czy wyłączysz R8 w pliku gradle.properties
projektu.
-
ndkCompile
jest wycofany: jeśli spróbujesz użyćndkBuild
do skompilowania bibliotek natywnych, pojawi się błąd kompilacji. Zamiast tego użyj CMake lub ndk-build, aby dodać do projektu kod w językach C i C++.
Znane problemy
-
Prawidłowe używanie unikalnych nazw pakietów nie jest obecnie wymuszane, ale w późniejszych wersjach wtyczki będzie bardziej rygorystyczne. W przypadku wtyczki Androida do obsługi Gradle w wersji 3.4.0 możesz włączyć sprawdzanie, czy projekt deklaruje akceptowalne nazwy pakietów, dodając poniższy wiersz do pliku
gradle.properties
.android.uniquePackageNames = true
Więcej informacji o ustawianiu nazwy pakietu za pomocą wtyczki Androida do obsługi Gradle znajdziesz w artykule Ustawianie identyfikatora aplikacji.