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ć regresję 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 wcześniej używasz konfiguracji zależnościlintChecks
, aby uwzględniać w publikowanym pliku AAR sprawdzanie za pomocą narzędzia lint, 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 funkcji dynamicznych. Dzięki niej możesz też publikować zarówno wersję instalowaną, jak i błyskawiczną aplikacji z poziomu jednego pakietu Android App Bundle. -
R8 włączony domyślnie: R8 integruje usuwanie składni cukru, zmniejszanie, 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 korzystaniem z 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 dla danego typu kompilacji w pliku build.gradle
modułu aplikacji ustawisz wartość useProguard
na false
, wtyczka Androida do obsługi Gradle użyje R8 do zmniejszenia kodu aplikacji dla tego 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.