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 Aktualizowanie 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 na potrzeby środowiska wykonawczego Androida (lub Dalvik w starszych wersjach Androida). W porównaniu z poprzednim kompilatorem DX kompilator D8 działa szybciej i generuje mniejsze pliki DEX, a przy tym zapewnia taką samą lub lepszą wydajność aplikacji w czasie działania.

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 usuwanie składni jest domyślnie włączone. Możesz ją wyłączyć, podając w pliku gradle.properties projektu to polecenie:

      android.enableIncrementalDesugaring=false.
    

Użytkownicy wersji podglądowej: jeśli używasz już wersji podglądowej D8, pamiętaj, że kompiluje ona teraz biblioteki zawarte w narzędziach do tworzenia pakietu SDK, a nie w 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, otrzymasz błąd kompilacji.

Zmiany w działaniu

  • Podczas tworzenia wielu plików APK, z których każdy jest kierowany na inny interfejs ABI, domyślnie nie generuje już plików APK dla tych interfejsów: mips, mips64armeabi.

    Jeśli chcesz utworzyć pliki APK przeznaczone na te interfejsy ABI, musisz użyć NDK w wersji r16b lub starszej 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")
                      ...
                  }
              }
            
  • Wtyczka Androida pamięć podręczna kompilacji usuwa teraz wpisy starsze niż 30 dni.

  • Przekazywanie wartości "auto" do resConfig nie powoduje już automatycznego wybierania zasobów ciągów znaków do spakowania w pliku APK. Jeśli nadal będziesz używać "auto", wtyczka spakuje wszystkie zasoby ciągów znaków udostępniane przez aplikację i jej zależności. Zamiast tego określ każdą wersję językową, którą chcesz spakować do pliku APK.

  • Moduły lokalne nie mogą zależeć od testowego pliku APK aplikacji, więc dodanie zależności do testów instrumentalnych za pomocą konfiguracji androidTestApi zamiast androidTestImplementation spowoduje wyświetlenie przez Gradle tego ostrzeżenia:

            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 kompozytowych kompilacjach.
  • Rozwiązuje 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.