Wtyczka Androida do obsługi Gradle w wersji 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 o aktualizowaniu Gradle.
Uwaga: w przypadku używania Gradle w wersji 5.0 lub nowszej domyślny rozmiar sterty 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 tworzenia pakietów SDK w wersji 28.0.3 lub nowszej.
Ta niewielka aktualizacja zapewnia zgodność z nowymi ustawieniami domyślnymi 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 niewielka aktualizacja obsługuje Androida Studio 3.4.2 i obejmuje różne poprawki błędów oraz ulepszenia wydajności. Aby zobaczyć listę ważnych poprawek błędów, przeczytaj powiązany post na blogu o aktualizacjach wersji.
3.4.1 (maj 2019 r.)
Ta niewielka aktualizacja obsługuje Androida Studio 3.4.1 i obejmuje różne poprawki błędów oraz ulepszenia wydajności. Aby zobaczyć listę ważnych poprawek błędów, przeczytaj powiązany post na blogu o aktualizacjach wersji.
Nowe funkcje
-
Nowe konfiguracje zależności sprawdzania lintowania: zachowanie
lintChecks
uległo zmianie i wprowadziliśmy nową konfigurację zależnościlintPublish
, aby zapewnić Ci większą kontrolę nad tym, które kontrole lint są spakowane w Twoich bibliotekach Androida.-
lintChecks
: to jest istniejąca konfiguracja, której należy użyć do kontroli lintowania, która ma być uruchamiana tylko podczas kompilowania projektu lokalnie. Jeśli wcześniej konfiguracja zależnościlintChecks
uwzględniała kontrole lint w opublikowanym AAR, musisz przenieść te zależności, aby korzystały z nowej konfiguracjilintPublish
opisanej poniżej. -
lintPublish
: użyj tej nowej konfiguracji w projektach biblioteki na potrzeby kontroli lint, które chcesz uwzględnić w opublikowanym AAR, jak pokazano poniżej. Oznacza to, że projekty, które wykorzystują Twoją bibliotekę, stosują również te lintowania.
Poniższy przykładowy kod korzysta z obu konfiguracji zależności w projekcie biblioteki lokalnej 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 rzecz biorąc, zadania tworzenia pakietów i podpisywania powinny przyspieszyć kompilację. Jeśli zauważysz spadek wydajności związany 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 jej wycofaniu. Aby mieć pewność, że w przyszłych wersjach wtyczki nadal będzie można tworzyć aplikacje błyskawiczne, przenieś je za pomocą wtyczki funkcji dynamicznych. Umożliwia ona publikowanie zarówno aplikacji instalowanych, jak i błyskawicznych z poziomu jednego pakietu Android App Bundle. -
R8 domyślnie włączone: R8 integruje usuwanie cukru, zmniejszanie, zaciemnianie, optymalizację i dekodowanie w jednym kroku, czego efektem jest zauważona poprawa wydajności kompilacji. Rozwiązanie R8 zostało wprowadzone we wtyczce Androida do obsługi Gradle w wersji 3.3.0 i jest teraz domyślnie włączone zarówno w projektach aplikacji, jak i bibliotek Androida korzystających z wtyczki w wersji 3.4.0 lub nowszej.
Poniższy obraz przedstawia ogólny proces kompilacji przed wprowadzeniem R8.
![Wcześniej ProGuard był innym etapem kompilacji niż dexing i odświeżanie.](https://developer.android.google.cn/static/studio/images/build/r8/compile_with_d8_proguard.png?hl=pl)
Teraz w przypadku R8 odsłuchiwanie, zmniejszanie, zaciemnianie, optymalizacja i deksowanie (D8) można wykonać w jednym kroku, jak pokazano poniżej.
![W przypadku R8 odsłuchiwanie, zmniejszanie, zaciemnianie, optymalizacja i dexing odbywa się w ramach jednego kroku kompilacji.](https://developer.android.google.cn/static/studio/images/build/r8/compile_with_r8.png?hl=pl)
Pamiętaj, że R8 jest zaprojektowany do współpracy z istniejącymi regułami ProGuard, więc prawdopodobnie nie będzie trzeba podejmować żadnych działań, aby skorzystać z R8. Jest to jednak inna technologia niż ProGuard, która została stworzona specjalnie dla projektów na Androida, więc zmniejszanie i optymalizacja może spowodować usunięcie kodu, którego może nie mieć ProGuard. W tej nieprawdopodobnej sytuacji konieczne może być dodanie dodatkowych reguł, aby zachować ten kod w danych wyjściowych kompilacji.
Jeśli podczas korzystania z R8 występują problemy, przeczytaj Najczęstsze pytania na temat zgodności z R8, by sprawdzić, czy możesz je tam znaleźć. Jeśli rozwiązanie nie jest udokumentowane, zgłoś błąd.
Aby wyłączyć R8, dodaj do pliku gradle.properties
projektu jeden z tych wierszy:
# 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żywa R8 do zmniejszenia kodu aplikacji dla 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 skompilować biblioteki natywne za pomocąndkBuild
, wystąpi błąd kompilacji. Aby dodać do projektu kod w 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. W przypadku wtyczki Androida do obsługi Gradle w wersji 3.4.0 możesz włączyć sprawdzanie, czy Twój projekt deklaruje dopuszczalne 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.