Wtyczka Androida do obsługi Gradle 3.4.0 (kwiecień 2019 r.)
Ta wersja wtyczki na Androida wymaga:
-
Gradle w wersji 5.1.1 lub nowszej. Więcej informacji znajdziesz w sekcji na temat aktualizowania Gradle.
Uwaga: jeśli używasz Gradle w wersji 5.0 lub nowszej, domyślny rozmiar stosu pamięci demona Gradle zmniejsza się z 1 GB do 512 MB. Może to spowodować pogorszenie wydajności kompilacji. Aby zastąpić to ustawienie domyślne, określ rozmiar stosu demonów Gradle w pliku
gradle.properties
projektu. -
Narzędzia do kompilacji SDK w wersji 28.0.3 lub nowszej.
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.4.2 (lipiec 2019 r.)
Ta drobna aktualizacja obsługuje Androida Studio w wersji 3.4.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.4.1 (maj 2019 r.)
Ta drobna aktualizacja obsługuje Androida Studio w wersji 3.4.1 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.
Nowe funkcje
-
Nowe konfiguracje zależności lintowania: zmieniliśmy działanie
lintChecks
i wprowadziliśmy nową konfigurację zależnościlintPublish
, aby zapewnić Ci większą kontrolę nad tym, które testy lintowania są umieszczane w pakietach w bibliotekach Androida.-
lintChecks
: to jest istniejąca konfiguracja, której należy używać do testów lintowania, które chcesz przeprowadzać wyłącznie podczas tworzenia projektu lokalnie. Jeśli wcześniej korzystano z konfiguracji zależnościlintChecks
do uwzględniania testów lint w opublikowanym narzędziu AAR, musisz przenieść te zależności, aby zamiast nich używać opisanej poniżej nowej konfiguracjilintPublish
. -
lintPublish
: użyj tej nowej konfiguracji w projektach biblioteki na potrzeby testów lintowania, które chcesz uwzględnić w opublikowanym pliku AAR, jak pokazano poniżej. Oznacza to, że projekty, które wykorzystują Twoją bibliotekę, również stosują te testy lintowania.
Poniższy przykładowy kod używa obu konfiguracji zależności w projekcie lokalnej biblioteki na 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 pakowania i podpisywania powinny powodować ogólną poprawę szybkości kompilacji. Jeśli zauważysz pogorszenie wydajności związane z tymi zadaniami, zgłoś błąd.
-
Zmiany w działaniu
-
Ostrzeżenie o wycofaniu wtyczki funkcji aplikacji błyskawicznych na Androida: jeśli nadal używasz wtyczki
com.android.feature
do tworzenia aplikacji błyskawicznej, wtyczka Androida do obsługi Gradle w wersji 3.4.0 wyświetli ostrzeżenie o wycofaniu. Aby mieć pewność, że nadal będziesz w stanie tworzyć aplikacje błyskawiczne z wykorzystaniem przyszłych wersji wtyczki, przenieś swoją aplikację błyskawiczną do wtyczki funkcji dynamicznej, która umożliwia publikowanie zarówno aplikacji zainstalowanych, jak i błyskawicznych z poziomu 1 pakietu Android App Bundle. -
Domyślnie włączony R8: R8 integruje w jednym kroku odpalanie, zmniejszanie, zaciemnianie, zaciemnianie, optymalizację i usuwanie szczegółów, co daje zauważalne ulepszenia wydajności kompilacji. Usługa R8 została wprowadzona we wtyczce Androida do obsługi Gradle w wersji 3.3.0 i jest teraz domyślnie włączona w projektach z bibliotekami w aplikacjach i na Androidzie za pomocą wtyczki w wersji 3.4.0 lub nowszej.
Na ilustracji poniżej przedstawiono ogólny przegląd procesu kompilacji przed wprowadzeniem R8.
W przypadku R8 usuwanie odblasków, zmniejszanie, zaciemnianie, optymalizowanie i usuwanie (D8) można wykonać w jednym kroku, jak widać na przykładzie poniżej.
Pamiętaj, że R8 zostało zaprojektowane do współpracy z Twoimi istniejącymi regułami ProGuard, więc prawdopodobnie nie musisz podejmować żadnych działań, aby skorzystać z R8. Ponieważ jednak jest to inna technologia niż ProGuard, która została opracowana specjalnie na potrzeby projektów na Androida, pomniejszenie i optymalizacja może spowodować usunięcie kodu, którego ProGuard może nie. W tej mało prawdopodobnej sytuacji konieczne może być dodanie kolejnych reguł, aby zachować ten kod w danych wyjściowych kompilacji.
Jeśli masz problemy z R8, przeczytaj Najczęstsze pytania na temat zgodności z R8, aby sprawdzić, czy można tam znaleźć rozwiązanie. Jeśli rozwiązania nie ma w dokumentacji, zgłoś błąd.
Możesz wyłączyć R8, dodając 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 przypadku danego typu kompilacji ustawisz useProguard
na false
w pliku build.gradle
modułu aplikacji, wtyczka Androida do obsługi Gradle użyje R8 do zmniejszania kodu aplikacji pod kątem tego typu kompilacji niezależnie od tego, czy wyłączysz R8 w pliku gradle.properties
projektu.
-
Usługa
ndkCompile
została wycofana: jeśli spróbujesz użyć językandkBuild
do skompilowania bibliotek natywnych, wystąpi błąd kompilacji. Aby dodać do projektu kod C i C++, użyj CMake lub ndk-build.
Znane problemy
-
Prawidłowe użycie unikalnych nazw pakietów nie jest obecnie wymuszane, ale w nowszych wersjach wtyczki będzie bardziej rygorystyczne. We wtyczce do obsługi Gradle na Androida w wersji 3.4.0 możesz włączyć funkcję sprawdzania, czy Twój projekt określa dopuszczalne nazwy pakietów. Aby to zrobić, dodaj 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.