Korzystanie z nowego studia Android z nową wtyczką Gradle 3.0.0.
Podczas budowania pojawiło się ostrzeżenie:
registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)
Korzystanie z nowego studia Android z nową wtyczką Gradle 3.0.0.
Podczas budowania pojawiło się ostrzeżenie:
registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)
Odpowiedzi:
Z tego co wiem, wtyczki dodane jako zależności ścieżki klas będą powodować problemy. Tj. Firebase miał z tym problem. Łyżka i Flutter również. Wykonywanie tego wyszukiwania w Google ujawnia wiele repozytoriów GitHub, w których pojawił się problem związany z tym samym, a wszystko, co je łączy, to fakt, że jest to wtyczka Gradle. Tkanina również wydaje się być przyczyną, o czym wspomina Mate *
Z tego, co wiem, problem pochodzi z / wielu wtyczek Gradle. Może być również wyzwalany przez kod Gradle, ale najprawdopodobniej nie ma to zastosowania, jeśli projekt jest aplikacją, a nie wtyczką Gradle.
A jak wspomniał Alex Cohn w komentarzu, wycofanie się jest ostrzeżeniem. W tym przypadku oznacza to, że jest to funkcja, która zostanie ostatecznie usunięta. Więc na razie, zakładając, że jest to wtyczka (a nie stworzona przez Ciebie), możesz ją zignorować. Do czasu jego usunięcia większość / wszystkie główne wtyczki powinny zostać zaktualizowane, aby to naprawić.
I znowu jest to ostrzeżenie; nie jest to błąd. Nadal możesz go uruchomić i zignorować, jeśli nie możesz nic zrobić z problemem. Wyłączenie np. Wtyczki Fabric * jest przesadą, ponieważ nadal działa.
Sam nie używam Fabric, a Fabric nie jest open-source, więc nie wiem, czy programiści to naprawili, czy nie
TL; DR: Przyczyną są wtyczki Gradle. To ostrzeżenie (nie błąd), więc usunięcie wtyczek powodujących problem jest przesadą. Jeśli nie możesz tego naprawić, zostaw to w spokoju, o ile jest tylko wycofane w tej chwili (nie zostało usunięte)
Jeśli korzystasz z Firebase, istnieje specyficzne rozwiązanie, które jest również wspomniane w przewodniku migracji (link w dalszej części tego postu); wyklucz moduł guawa
classpath ('com.google.firebase:firebase-plugins:1.1.0') {
exclude group: 'com.google.guava', module: 'guava-jdk5'
}
Sam problem jest dość trudny do wykrycia. Z tego, co wiem, nie ma jednego problemu, który go powoduje we wszystkich sprawdzonych wtyczkach (i połączonych w tej odpowiedzi). Jeśli zakodowałeś coś, co powoduje problem (i można to naprawić; dodanie wtyczki gradle innej firmy go nie powoduje), jest kilka rzeczy, które możesz spróbować naprawić.
Z tego, co mogę powiedzieć na temat rzeczywistej przyczyny, można to rozwiązać, aktualizując plik Gradle (chociaż w bibliotece Spoon zostało to naprawione przez zmianę wiersza związanego z TestVariant
), postępując zgodnie z tematami w przewodniku migracji wtyczki Gradle 3.0.0.
Całość jest opisana w dokumentacji deweloperskiej , ale tutaj jest kilka rzeczy, które moim zdaniem są istotne w oparciu o żądania ściągnięcia wykonane w projektach, w których był to problem:
Oprócz aktualizacji wersji Gradle i wtyczki, musisz również dodać google()
repozytorium pod repositories
.
compile
jest teraz implementation
lub api
, ale implementation
jest zalecany.
provided
jest compileOnly
i apk
jestruntimeOnly
androidTestCompile
stał się androidTestImplementation
i testCompile
->testImplementation
Jeśli używasz smaków, musisz użyć wymiarów smaków (opisanych w dokumentacji).
W przypadku typów kompilacji należy uwzględnić rezerwy na wypadek, gdyby biblioteka nie miała tego typu kompilacji. Są one zdefiniowane w profile
bloku pod android
blokiem.
Jeśli jeszcze tego nie zrobiłeś, musisz najpierw zdefiniować wtyczkę gradle. Jeśli nie masz żadnych innych zależności ścieżek klas, nie stanowi to problemu. Ale jeśli tak, upewnij się, że wtyczka gradle jest zdefiniowana jako pierwsza.
Jeśli używasz testVariants
, upewnij się, że nie dzwonisz testedVariant
na zajęcia. Wydaje się, że jest to przyczyna powstania biblioteki Spoon.
Są to, na podstawie tego, co udało mi się stwierdzić, niektóre zmiany wprowadzone w celu rozwiązania problemu.
Używam wtyczki Play Services Gradle com.google.gms:google-services
w wersji 4.2.0
.
W kodzie źródłowym widzimy, że:
Dla mnie to był powód moich ostrzeżeń i nie można go usunąć, dopóki wtyczka nie zostanie naprawiona. Problem jest tutaj
Jak wspomniał @Zoe, może to pochodzić również z innych wtyczek Gradle.
Najlepsza
Problem został rozwiązany za pomocą wtyczki usług Google w wersji 4.3.0 (rozwiązana za pomocą tego zobowiązania )
buildscript {
dependencies {
// Change version to 4.3.0
classpath 'com.google.gms:google-services:4.3.0'
}
}
Znaleziono tutaj
Aktualizacja do najnowszej wersji wtyczki Fabric Gradle Plugin rozwiązuje ten problem.
Z dziennika zmian:
W moim przypadku było to spowodowane niedopasowaną wersją bibliotek obsługi Androida. Zaktualizowałem wszystkie moduły do najnowszej wersji (28.0.0) i to rozwiązało problem.
Po prawidłowym zainstalowaniu Fabric ten problem został rozwiązany
import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, new Crashlytics());
}
}
build.gradle
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
dependencies {
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
}
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
Miałem ten komunikat o błędzie i wiele innych podobnych
x-version is deprecated and use y-version instead and it'll be removed in 2019
i cały mój projekt nagle zaczął wyświetlać te same komunikaty o błędach.
Studio Android ostrzegało o moim programie antywirusowym. Próbowałem go skonfigurować, ale nie zadziałało.
W końcu odinstalowałem program antywirusowy QuickHeal z mojego systemu i wszystko jest w porządku
Wszystkie inne odpowiedzi dotyczą problemów z komponentami innych firm .
Oto jak zaktualizować swój projekt, który wykorzystuje registerResGeneratingTask
bezpośrednio:
Przed:
variant.registerResGeneratingTask generateIcon, ICON_DIR
Po:
variant.mergeResourcesProvider.get().dependsOn generateIcon
variant.registerGeneratedResFolders files(ICON_DIR)
Kompilacja na poziomie projektu Grada
Użyj następującej wersji zależności usług Google.
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
classpath 'com.google.gms:google-services:4.3.0'
classpath ('com.google.firebase:firebase-plugins:1.1.0') {
exclude group: 'com.google.guava', module: 'guava-jdk5'
}
}
Rozwiązany problem dla mnie.
Dla mnie to ostrzeżenie zniknęło, gdy wyłączyłem wtyczkę gradle tkaniny, o proszę sprawdzić, czy używasz tkaniny lub innej wtyczki, która jest odpowiedzialna za to ostrzeżenie.
com.google.gms:google-services
4.0.1
i 4.0.2
obie powodują to ostrzeżenie.