Gemäß dem folgenden SO post wurde compile
in letzter Zeit zu implementation
: Was ist der Unterschied zwischen Implementierung und Kompilierung in Gradle
Meine Frage ist, was soll ich anstelle von compileOnly
verwenden? Der Beitrag oben bezieht sich nicht auf diese gradle config. Ich weiß, dass ich noch compileOnly
verwenden kann, aber welche empfohlene Konfiguration wird nicht bald verworfen?
Es schien, als würden alle Konfigurationen, die ..compile..
enthalten, durch ..implementation..
ersetzt. Ich habe implementationOnly
ausprobiert, aber nicht von Android Studio akzeptiert.
compileOnly
ist der Ersatz - die entsprechende veraltete Konfiguration ist provided
. Siehe die Dokumentation .
Ihre Projektgradabhängigkeit sollte geändert werdendependencies { provided 'com.someDependency:api:78'}
todependencies { compileOnly 'com.someDependency:api:78'}
Es gibt einen Fall, in dem Sie den automatischen Vorschlag von IDE zum Hinzufügen eines Projekts zu Ihrer Gradle-Datei akzeptieren. Korrigieren Sie es und es wird Ihnen gut gehen.
Android Plugin für Gradle 3.0.0
before - Veraltete Konfiguration - provided
after - Neue Konfiguration - compileOnly
Gradle fügt die Abhängigkeit nur zum Kompilierungsklassenpfad hinzu (es wird nicht zur Build-Ausgabe hinzugefügt). Dies ist nützlich, wenn Sie ein Android-Bibliotheksmodul erstellen und die Abhängigkeit während der Kompilierung benötigen. Es ist jedoch optional, zur Laufzeit präsent zu sein. Das heißt, wenn Sie diese Konfiguration verwenden, muss Ihr Bibliotheksmodul eine Laufzeitbedingung enthalten, um zu prüfen, ob die Abhängigkeit verfügbar ist, und dann das Verhalten ordnungsgemäß ändern, sodass es weiterhin funktioniert, wenn es nicht bereitgestellt wird. Dies trägt dazu bei, die Größe der endgültigen APK zu reduzieren, indem keine vorübergehenden Abhängigkeiten hinzugefügt werden, die nicht kritisch sind. Diese Konfiguration verhält sich wie angegeben (jetzt veraltet).