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

Zależności:
Nowość:
  • Korzysta z Gradle 2.14.1, która zawiera ulepszenia w zakresie wydajności i nowe funkcje oraz eliminuje lukę w zabezpieczeniach, która umożliwia lokalne eskalację uprawnień podczas korzystania z demona Gradle. Więcej informacji znajdziesz w informacjach o wersji Gradle.
  • Korzystając z DSL externalNativeBuild {}, Gradle umożliwia teraz tworzenie połączeń ze źródłami natywnymi i kompilowanie bibliotek natywnych za pomocą CMake lub ndk-build. Po utworzeniu bibliotek natywnych Gradle zapakuje 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 teraz automatycznie pobrać brakujące komponenty lub aktualizacje pakietu SDK, 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 deksowanie, przechowywanie i ponowne wykorzystywanie wstępnie przygotowanych wersji bibliotek. Więcej informacji o korzystaniu z tej eksperymentalnej funkcji znajdziesz w przewodniku Build Cache.
  • Zwiększa wydajność kompilacji przez przyjęcie nowego domyślnego potoku tworzenia pakietów, który zajmuje się kompresowaniem, podpisywaniem i wyrównywaniem ZIP w ramach jednego zadania. Aby wrócić do używania starszych narzędzi do tworzenia pakietów, dodaj android.useOldPackaging=true do pliku gradle.properties. Gdy korzystasz z nowego narzędzia do tworzenia pakietów, 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 oprócz tradycyjnego podpisywania JAR używa teraz schematu podpisu pliku APK w wersji 2. Wszystkie platformy Androida akceptują wygenerowane pliki APK. Każda modyfikacja tych plików APK po podpisaniu powoduje unieważnienie ich podpisów w wersji 2 i uniemożliwienie instalacji na urządzeniu. Aby wyłączyć tę funkcję, dodaj ten fragment do pliku build.gradle na poziomie modułu:

    Odlotowy

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

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • W przypadku kompilacji multidex za pomocą reguł ProGuard możesz teraz określać, które klasy Gradle ma skompilować w głównym pliku DEX aplikacji. System Android najpierw wczytuje główny plik DEX przy uruchamianiu aplikacji, dlatego możesz nadać priorytet określonym klasom podczas uruchamiania, skompilując je w głównym pliku DEX. Gdy utworzysz plik konfiguracji ProGuard specjalnie dla głównego pliku DEX, przekaż ścieżkę pliku konfiguracji do Gradle za pomocą buildTypes.multiDexKeepProguard. Używanie tego DSL różni się od użycia buildTypes.proguardFiles, który udostępnia ogólne reguły ProGuard aplikacji i nie określa klas głównego pliku DEX.
  • Dodaje obsługę flagi android:extractNativeLibs, która może zmniejszać rozmiar aplikacji instalowanej na urządzeniu. Gdy ustawisz tę flagę na false w elemencie <application> pliku manifestu aplikacji, Gradle pakietuje nieskompresowane i dopasowane wersje bibliotek natywnych do Twojego pliku APK. Zapobiega to kopiowaniu przez PackageManager bibliotek natywnych z pliku APK do systemu plików urządzenia podczas instalacji, a dodatkową zaletą jest to, że aktualizacje delta aplikacji są mniejsze.
  • Teraz możesz określić versionNameSuffix i applicationIdSuffix dla smaków produktów. (Numer 59614)
Zmiany:
  • getDefaultProguardFile zwraca teraz domyślne pliki ProGuard udostępniane przez wtyczkę do Androida dla Gradle i nie korzysta już z plików z pakietu Android SDK.
  • Ulepszona wydajność i funkcje kompilatora Jack:
    • Jack obsługuje teraz zasięg testu Jacoco przy ustawieniu testCoverageEnabled na true.
    • Ulepszona obsługa procesorów adnotacji. Procesory adnotacji w ścieżce klasy, takie jak zależności compile, są automatycznie stosowane do kompilacji. Procesor adnotacji możesz też określić w kompilacji i argumentach przekazywania, używając DSL javaCompileOptions.annotationProcessorOptions {} w pliku build.gradle na poziomie modułu:

      Odlotowy

      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 podczas kompilacji, ale nie chcesz go uwzględnić w pliku APK, użyj zakresu zależności annotationProcessor:

      Odlotowy

      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żna ustawić, uruchom to polecenie z wiersza poleceń:

      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 demonów, dodaj do pliku gradle.properties ten fragment:

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