wake-up-neo.com

Android Gradle - Was kann man nicht compileOnly verwenden?

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.

21

compileOnlyist der Ersatz - die entsprechende veraltete Konfiguration ist provided. Siehe die Dokumentation .

34
CommonsWare

Ihre Projektgradabhängigkeit sollte geändert werden
dependencies { provided 'com.someDependency:api:78'}to
dependencies { compileOnly 'com.someDependency:api:78'}

0
anotherNoob

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.

0
Brian Chu

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).

0
yoAlex5