Wtyczka Androida do obsługi Gradle w wersji 2.2.0 (wrzesień 2016 r.)

Zależności:
Wersja minimalna Wersja domyślna Uwagi
Gradle 2.14.1 2.14.1 Więcej informacji znajdziesz w sekcji Aktualizowanie Gradle.
SDK Build Tools 23.0.2 23.0.2 Zainstaluj lub skonfiguruj narzędzia do kompilacji pakietu SDK.
Nowość:
  • Korzysta z Gradle w wersji 2.14.1, która zawiera ulepszenia wydajności i nowe funkcje oraz usuwa lukę w zabezpieczeniach umożliwiającą lokalne podniesienie uprawnień podczas korzystania z demona Gradle. Więcej informacji znajdziesz w informacjach o wersji Gradle.
  • Korzystając z języka externalNativeBuild {} DSL, Gradle umożliwia teraz łączenie się z natywnymi źródłami i kompilowanie bibliotek natywnych za pomocą CMake lub ndk-build. Po utworzeniu bibliotek natywnych Gradle pakuje je do pliku APK. Więcej informacji o używaniu CMake i ndk-build z Gradle znajdziesz w artykule Dodawanie do projektu kodu w C i C++.
  • Gdy uruchamiasz kompilację z poziomu wiersza poleceń, Gradle próbuje teraz automatycznie pobrać brakujące komponenty pakietu SDK lub aktualizacje, od których zależy Twój projekt. Więcej informacji znajdziesz w artykule Automatyczne pobieranie brakujących pakietów za pomocą Gradle.
  • Nowa eksperymentalna funkcja buforowania umożliwia Gradle przyspieszenie kompilacji przez wstępne indeksowanie, przechowywanie i ponowne wykorzystywanie wstępnie indeksowanych wersji bibliotek. Więcej informacji o korzystaniu z tej eksperymentalnej funkcji znajdziesz w przewodniku Build Cache.
  • Zwiększa wydajność kompilacji dzięki zastosowaniu nowego domyślnego potoku pakowania, który w ramach jednego zadania obsługuje kompresję, podpisywanie i wyrównywanie. Możesz wrócić do starszych narzędzi do pakowania, dodając android.useOldPackaging=true do pliku gradle.properties. Podczas korzystania z nowego narzędzia do pakowaniazipalignDebug nie jest dostępna. Możesz jednak utworzyć własną, wywołując metodę createZipAlignTask(String taskName, File inputFile, File outputFile).
  • Podpisywanie plików APK odbywa się teraz przy użyciu schematu podpisu APK w wersji 2, a także tradycyjnego podpisywania plików JAR. Wszystkie platformy Androida akceptują powstałe pliki APK. Wszelkie modyfikacje tych plików APK po podpisaniu unieważniają ich podpisy w wersji 2 i uniemożliwiają instalację na urządzeniu. Aby wyłączyć tę funkcję, dodaj ten kod do pliku build.gradle na poziomie modułu:

    Groovy

    android {
      ...
      signingConfigs {
        config {
          ...
          v2SigningEnabled false
        }
      }
    }
          

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • W przypadku kompilacji multidex możesz teraz używać reguł ProGuard, aby określać, które klasy Gradle ma kompilować do pliku DEX main aplikacji. Ponieważ system Android podczas uruchamiania aplikacji najpierw wczytuje główny plik DEX, możesz nadać priorytet niektórym klasom podczas uruchamiania, kompilując je w głównym pliku DEX. Po utworzeniu pliku konfiguracji ProGuard specjalnie dla głównego pliku DEX przekaż ścieżkę pliku konfiguracji do Gradle za pomocą buildTypes.multiDexKeepProguard. Korzystanie z tego DSL-a różni się od korzystania z  buildTypes.proguardFiles, które udostępnia ogólne reguły ProGuard dla aplikacji i nie określa klas dla głównego pliku DEX.
  • Dodaje obsługę flagi android:extractNativeLibs, która może zmniejszyć rozmiar aplikacji podczas instalowania jej na urządzeniu. Gdy ustawisz tę flagę na false w elemencie <application> w manifeście aplikacji, Gradle spakuje nieskompresowane i wyrównane wersje bibliotek natywnych w pliku APK. Zapobiega to kopiowaniu bibliotek natywnych z pliku APK do systemu plików urządzenia podczas instalacji i dodatkowo zmniejsza rozmiar aktualizacji różnicowych aplikacji.PackageManager
  • Możesz teraz określić versionNameSuffix i applicationIdSuffix dla wersji produktu. (Problem 59614)
Zmiany:
  • getDefaultProguardFile zwraca teraz domyślne pliki ProGuard dostarczane przez wtyczkę Androida do Gradle i nie używa już plików z pakietu SDK Androida.
  • Ulepszona wydajność i funkcje kompilatora Jack:
    • Jack obsługuje teraz pokrycie testami Jacoco, gdy ustawisz testCoverageEnabled na true.
    • Ulepszona obsługa procesorów adnotacji. Procesory adnotacji na ścieżce klas, takie jak zależności compile, są automatycznie stosowane w kompilacji. Możesz też określić procesor adnotacji w kompilacji i przekazać argumenty za pomocą języka DSL javaCompileOptions.annotationProcessorOptions {} w pliku build.gradle na poziomie modułu:

      Groovy

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className 'com.example.MyProcessor'
              // Arguments are optional.
              arguments = [ foo : 'bar' ]
            }
          }
        }
      }
          

      Kotlin

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className = "com.example.MyProcessor"
              // Arguments are optional.
              arguments(mapOf(foo to "bar"))
            }
          }
        }
      }
          

      Jeśli chcesz zastosować procesor adnotacji w czasie kompilacji, ale nie chcesz go uwzględniać w pliku APK, użyj zakresu zależności annotationProcessor:

      Groovy

      dependencies {
          compile 'com.google.dagger:dagger:2.0'
          annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          

      Kotlin

      dependencies {
          implementation("com.google.dagger:dagger:2.0")
          annotationProcessor("com.google.dagger:dagger-compiler:2.0")
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          
    • Aby wyświetlić listę parametrów, które możesz ustawić, uruchom to polecenie z wiersza poleceń:

      java -jar /build-tools/jack.jar --help-properties
      

    • Domyślnie, jeśli rozmiar sterty demona Gradle wynosi co najmniej 1,5 GB, Jack działa w tym samym procesie co Gradle. Aby dostosować rozmiar sterty demona, dodaj do pliku gradle.properties te informacje:

      # This sets the daemon heap size to 1.5GB.
      org.gradle.jvmargs=-Xmx1536M