Wtyczka Androida do obsługi Gradle w wersji 3.1.0 (marzec 2018 r.)

Ta wersja wtyczki Androida wymaga:

Wersja minimalna Wersja domyślna Uwagi
Gradle 4.4 4.4 Więcej informacji znajdziesz w artykule o aktualizowaniu Gradle.
Narzędzia do kompilacji pakietu SDK 27.0.3 27.0.3 Zainstaluj lub skonfiguruj narzędzia SDK do kompilacji. Pamiętaj, że nie musisz już określać wersji narzędzi do kompilacji za pomocą właściwości android.buildToolsVersion – wtyczka domyślnie używa minimalnej wymaganej wersji.

Nowy kompilator DEX, D8

Domyślnie Android Studio używa teraz nowego kompilatora DEX o nazwie D8. Kompilacja DEX to proces przekształcania kodu bajtowego .class w kod bajtowy .dex dla środowiska wykonawczego Androida (lub Dalvik w przypadku starszych wersji Androida). W porównaniu z poprzednim kompilatorem, DX, D8 kompiluje szybciej i generuje mniejsze pliki DEX, zachowując przy tym taką samą lub lepszą wydajność aplikacji.

D8 nie powinien zmieniać codziennego procesu tworzenia aplikacji. Jeśli jednak napotkasz problemy związane z nowym kompilatorem, zgłoś błąd. Możesz tymczasowo wyłączyć D8 i używać DX, dodając do pliku gradle.properties projektu ten kod:

      android.enableD8=false
    

W przypadku projektów, które korzystają z funkcji języka Java 8, przyrostowe odlukrzanie jest domyślnie włączone. Możesz ją wyłączyć, określając w pliku gradle.properties projektu te informacje:

      android.enableIncrementalDesugaring=false.
    

Użytkownicy wersji testowej: jeśli używasz już wersji testowej D8, pamiętaj, że kompiluje ona teraz biblioteki dołączone do narzędzi do kompilacji pakietu SDK, a nie do JDK. Jeśli więc uzyskujesz dostęp do interfejsów API, które istnieją w JDK, ale nie w bibliotekach narzędzi do kompilacji pakietu SDK, wystąpi błąd kompilacji.

Zmiany w zachowaniu

  • Podczas tworzenia wielu plików APK kierowanych na różne interfejsy ABI domyślnie nie są już generowane pliki APK dla tych interfejsów ABI: mips, mips64 i armeabi.

    Jeśli chcesz utworzyć pliki APK kierowane na te interfejsy ABI, musisz użyć NDK r16b lub starszego i określić interfejsy ABI w pliku build.gradle, jak pokazano poniżej:

              splits {
                  abi {
                      include 'armeabi', 'mips', 'mips64'
                      ...
                  }
              }
            
              splits {
                  abi {
                      include("armeabi", "mips", "mips64")
                      ...
                  }
              }
            
  • Pamięć podręczna kompilacji wtyczki Androida usuwa teraz wpisy starsze niż 30 dni.

  • Przekazywanie "auto" do resConfig nie powoduje już automatycznego wybierania zasobów tekstowych do spakowania w pliku APK. Jeśli nadal będziesz używać "auto", wtyczka spakuje wszystkie zasoby tekstowe udostępniane przez aplikację i jej zależności. Zamiast tego musisz określić każdy język, który ma zostać spakowany przez wtyczkę do pliku APK.

  • Moduły lokalne nie mogą być zależne od testowego pliku APK aplikacji, dlatego dodanie zależności do testów z instrumentacją za pomocą konfiguracji androidTestApi zamiast androidTestImplementation powoduje, że Gradle wyświetla to ostrzeżenie:

            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            
            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            

Poprawki

  • Rozwiązuje problem polegający na tym, że Android Studio nie rozpoznaje prawidłowo zależności w kompilacjach wieloprojektowych.
  • Rozwiązaliśmy problem, który powodował błąd synchronizacji projektu podczas wielokrotnego wczytywania wtyczki Androida w jednej kompilacji (np. gdy wiele podprojektów zawierało wtyczkę Androida w ścieżce klasy skryptu kompilacji).