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

Ta wersja wtyczki na Androida wymaga:

Nowy kompilator DEX, D8

Domyślnie Android Studio używa teraz nowego kompilatora DEX o nazwie D8. Kompilacja plików DEX to proces przekształcania kodu bajtowego .class na kod bajtowy .dex ś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 przy zachowaniu takiej samej lub lepszej wydajności w czasie działania aplikacji.

Platforma D8 nie powinna zmieniać Twojego 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ć trybu DX, umieszczając te dane w pliku gradle.properties projektu:

      android.enableD8=false
    

W projektach, w których korzystasz z funkcji języka Java 8, odpalanie przyrostowe jest domyślnie włączone. Możesz ją wyłączyć, określając te elementy w pliku gradle.properties projektu:

      android.enableIncrementalDesugaring=false.
    

Podgląd użytkowników: jeśli korzystasz już z wersji testowej D8, pamiętaj, że teraz kompiluje się ona z bibliotekami zawartymi w narzędziach do kompilacji SDK, a nie z pakietem JDK. Jeśli więc uzyskujesz dostęp do interfejsów API, które istnieją w JDK, ale nie ma ich w bibliotekach narzędzi do kompilacji SDK, wystąpi błąd kompilacji.

Zmiany w działaniu

  • Gdy tworzysz wiele plików APK, z których każdy jest kierowany na inny interfejs ABI, usługa nie generuje już domyślnie plików APK dla tych interfejsów ABI: mips, mips64 i armeabi.

    Jeśli chcesz tworzyć pliki APK kierowane na te interfejsy ABI, musisz użyć NDK r16b lub starszego i określić interfejsy ABI w pliku build.gradle w sposób pokazany poniżej:

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

  • Przekazywanie "auto" do resConfig nie powoduje już automatycznego wyboru zasobów w postaci ciągów tekstowych do spakowania do pliku APK. Jeśli nadal będziesz używać "auto", wtyczka spowoduje pakiet ze wszystkimi zasobami tekstowymi udostępnianymi przez aplikację i jej zależności. Musisz więc określić wszystkie języki, które wtyczka ma spakować do pliku APK.

  • Moduły lokalne nie mogą zależeć od testowego pakietu APK aplikacji, dlatego dodanie zależności do testów instrumentowanych 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ązaliśmy problem, który powodował, że Android Studio nie rozpoznaje prawidłowo zależności w kompilacjach złożonych.
  • Rozwiązaliśmy problem, który powodował, że podczas wielokrotnego wczytywania wtyczki na Androida w jednej kompilacji występował błąd synchronizacji projektu, np. gdy wiele podprojektów zawierało wtyczkę na Androida w ścieżce klasy buildscript.