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

Zależności:
Minimalna wersja Wersja domyślna Uwagi
Gradle 2.14.1 2.14.1 Więcej informacji znajdziesz w artykule Aktualizowanie Gradle.
Narzędzia do kompilowania pakietu SDK 23.0.2 23.0.2 Zainstaluj lub skonfiguruj narzędzia do kompilowania pakietu SDK.
Nowość:
  • Używa Gradle 2.14.1, który zawiera ulepszenia wydajności i nowe funkcje oraz naprawia lukę w zabezpieczeniach umożliwiającą lokalną eskalację uprawnień podczas korzystania z demona Gradle. Więcej informacji znajdziesz w informacjach o wersji Gradle.
  • Za pomocą externalNativeBuild {} DSL Gradle możesz teraz łączyć swoje natywne źródła i kompilować natywne biblioteki 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 w Gradle znajdziesz w artykule Dodawanie kodu C i C++ do projektu.
  • Gdy uruchamiasz kompilację z poziomu wiersza poleceń, Gradle próbuje 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 przyspieszenie czasu kompilacji Gradle przez wstępną dekoderyzację, przechowywanie i ponowne używanie zdekodowanych wersji bibliotek. Aby dowiedzieć się więcej o korzystaniu z tej funkcji eksperymentalnej, przeczytaj przewodnik Build Cache.
  • Zwiększa wydajność kompilacji dzięki zastosowaniu nowego domyślnego potoku pakowania, który obsługuje kompresowanie, podpisywanie i wyrównywanie pakietów w ramach jednego zadania. Możesz wrócić do korzystania ze starszych narzędzi do pakowania, dodając plik android.useOldPackaging=true do pliku gradle.properties. Gdy używasz nowego narzędzia do pakowania, zadanie zipalignDebug jest niedostępne. Możesz jednak utworzyć go samodzielnie, wywołując metodę createZipAlignTask(String taskName, File inputFile, File outputFile).
  • Podpisywanie plików APK odbywa się teraz za pomocą schematu podpisu plików APK w wersji 2, a nie tylko tradycyjnego podpisywania plików JAR. Wszystkie platformy Androida akceptują utworzone pliki APK. Wszelkie zmiany w tych plikach APK po podpisaniu unieważniają ich podpisy v2 i uniemożliwiają instalację na urządzeniu. Aby wyłączyć tę funkcję, dodaj do pliku build.gradle na poziomie modułu następujący kod:

    Groovy

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

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • W przypadku kompilacji multidex możesz teraz używać reguł ProGuard do określania, które klasy Gradle powinien skompilować do głównego pliku DEX 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 ProGuarda przeznaczonego do głównego pliku DEX, przekaż ścieżkę do tego pliku do Gradle za pomocą buildTypes.multiDexKeepProguard. Korzystanie z tego języka opisu jest inne niż korzystanie z  buildTypes.proguardFiles, który zawiera ogólne reguły ProGuard dla aplikacji i nie określa klas w głównym pliku DEX.
  • Dodaje obsługę parametru android:extractNativeLibs, który może zmniejszyć rozmiar aplikacji podczas jej instalowania na urządzeniu. Gdy ustawisz tę flagę na wartość false<application> elemencie pliku manifestu aplikacji, Gradle spakietuje nieskompresowane i zgodne wersje bibliotek natywnych z pliku APK. Dzięki temu PackageManager nie będzie kopiować natywnych bibliotek z pliku APK do systemu plików urządzenia podczas instalacji. Dodatkowo zmniejszy to rozmiar aktualizacji delta aplikacji.
  • Możesz teraz określić versionNameSuffix i applicationIdSuffix dla wersji produktu. (Problem 59614)
Zmiany:
  • getDefaultProguardFile zwraca teraz domyślne pliki ProGuarda, które udostępnia wtyczka Androida do Gradle, i nie używa już plików z Android SDK.
  • Ulepszone działanie i funkcje kompilatora Jack:
    • Jack obsługuje teraz pokrycie testu Jacoco, gdy parametr testCoverageEnabled ma wartość true.
    • Ulepszona obsługa procesorów adnotacji. Procesory adnotacji w Twoim classpath, takie jak zależności compile, są automatycznie stosowane w Twoim kompilacji. Możesz też określić procesor adnotacji w kompilacji i przekazać argumenty, używając javaCompileOptions.annotationProcessorOptions {} DSL 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 uzyskać listę parametrów, które możesz skonfigurować, uruchom z poziomu wiersza poleceń to polecenie:

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

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

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