Wtyczka Androida do obsługi Gradle 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 artykule o aktualizowaniu Gradle. Jeśli używasz 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 sterty demona Gradle w pliku gradle.properties projektu. |
| Narzędzia do kompilacji pakietu SDK | 28.0.3 | 28.0.3 | Zainstaluj lub skonfiguruj narzędzia SDK do kompilacji. |
Ta niewielka aktualizacja zapewnia zgodność z nowymi ustawieniami domyślnymi i funkcjami dotyczącymi widoczności pakietów 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 Android Studio 3.4.2 i zawiera różne poprawki błędów oraz ulepszenia działania aplikacji. Listę najważniejszych poprawek błędów znajdziesz w powiązanym poście na blogu z informacjami o aktualizacjach.
3.4.1 (maj 2019 r.)
Ta niewielka aktualizacja obsługuje Android Studio 3.4.1 i zawiera różne poprawki błędów oraz ulepszenia wydajności. Listę najważniejszych poprawek błędów znajdziesz w powiązanym poście na blogu z informacjami o aktualizacjach.
Nowe funkcje
-
Nowe konfiguracje zależności kontroli błędów: działanie
lintChecksuległo zmianie i wprowadzono nową konfigurację zależnościlintPublish, aby zapewnić Ci większą kontrolę nad tym, które kontrole błędów są pakowane w bibliotekach Androida.-
lintChecks: jest to istniejąca konfiguracja, której należy używać do kontroli błędów, które chcesz przeprowadzać tylko podczas lokalnego kompilowania projektu. Jeśli wcześniej używano konfiguracji zależnościlintChecksdo uwzględniania kontroli linta w opublikowanym pliku AAR, musisz przenieść te zależności, aby używać nowej konfiguracjilintPublish. -
lintPublish: użyj tej nowej konfiguracji w projektach bibliotek do kontroli błędów, które chcesz uwzględnić w opublikowanym pliku AAR, jak pokazano w przykładzie poniżej. Oznacza to, że projekty, które korzystają z Twojej biblioteki, również stosują te kontrole linta.
Poniższy przykładowy kod używa 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 zachowaniu
-
Ostrzeżenie o wycofaniu wtyczki funkcji aplikacji błyskawicznych na Androida: jeśli nadal używasz wtyczki
com.android.featuredo 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 mieć możliwość tworzenia aplikacji błyskawicznej w przyszłych wersjach wtyczki, przejdź na wtyczkę funkcji dynamicznych, która umożliwia też publikowanie zarówno zainstalowanej, jak i błyskawicznej wersji aplikacji z jednego pakietu Android App Bundle. -
R8 jest domyślnie włączony: R8 integruje odlukrzanie, zmniejszanie, zaciemnianie, optymalizację i dexowanie w jednym kroku. Dzięki temu wydajność kompilacji znacznie się poprawia. 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 korzystających z wtyczki w wersji 3.4.0 lub nowszej.
Poniższy obraz przedstawia ogólne omówienie procesu kompilacji przed wprowadzeniem R8.
Teraz dzięki R8 odlukrzanie, zmniejszanie, zaciemnianie, optymalizacja i dexowanie (D8) są wykonywane w jednym kroku, jak pokazano poniżej.
Pamiętaj, że kompilator R8 został zaprojektowany do współpracy z istniejącymi regułami ProGuard, więc prawdopodobnie nie musisz podejmować żadnych działań, aby z niego korzystać. Ponieważ jest to jednak inna technologia niż ProGuard, zaprojektowana specjalnie na potrzeby projektów aplikacji na Androida, zmniejszanie i optymalizacja mogą spowodować usunięcie kodu, którego ProGuard nie usunął. W takiej mało prawdopodobnej sytuacji może być konieczne dodanie dodatkowych reguł, aby zachować ten kod w kompilacji.
Jeśli masz problemy z używaniem R8, przeczytaj najczęstsze pytania dotyczące zgodności z R8, aby sprawdzić, czy istnieje rozwiązanie Twojego problemu. Jeśli rozwiązanie nie jest udokumentowane, 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 zmniejszenia kodu aplikacji dla tego typu kompilacji, niezależnie od tego, czy wyłączysz R8 w pliku gradle.properties projektu.
-
ndkCompilejest wycofany: jeśli spróbujesz użyćndkBuilddo skompilowania bibliotek natywnych, pojawi się błąd kompilacji. Zamiast tego użyj CMake lub ndk-build, aby dodać do projektu kod C i C++.
Znane problemy
-
Prawidłowe użycie unikalnych nazw pakietów nie jest obecnie egzekwowane, ale w późniejszych wersjach wtyczki będzie to bardziej rygorystyczne. We wtyczce Androida do obsługi Gradle w wersji 3.4.0 możesz sprawdzić, czy Twój projekt deklaruje akceptowalne nazwy pakietów, dodając poniższy wiersz do pliku
gradle.properties.android.uniquePackageNames = trueWięcej informacji o ustawianiu nazwy pakietu za pomocą wtyczki Androida do obsługi Gradle znajdziesz w artykule o ustawianiu identyfikatora aplikacji.