2016-03-23 6 views
1

Ich habe ein Android-Projekt mit zwei Modulen. Ich habe diese App bereits bei Google Play veröffentlicht. Heute habe ich festgestellt, dass diese beiden Module unterschiedliche Abhängigkeiten der Support-Bibliotheksversionen in ihren Gradle-Dateien verwendet haben (in der derzeit in Google Play produzierten Version).Was passiert, wenn zwei Android-Module des gleichen Android-Projekts unterschiedliche Support-Bibliothek-Versionen verwenden?

Können verschiedene Support-Bibliotheksversionen in App-Modulen zu unerwarteten Problemen führen?

Antwort

4

Wenn ein Versionskonflikt vorliegt, wählt Gradle automatisch die höchste verfügbare Version. Stellen Sie sich eine App-App mit einem Bibliotheksmodul "mylibrary" vor. Ich habe die Kompatibilitätsversion auf 23.2.1 in "app" und 23.2.0 in "mylibrary" eingestellt. Der Ausgang des ./gradlew :app:dependencies zeigt, welche man am Ende ausgewählt wird:

_debugCompile - ## Internal use, do not manually configure ## 
+--- com.android.support:appcompat-v7:23.2.1 
| +--- com.android.support:support-v4:23.2.1 
| | \--- com.android.support:support-annotations:23.2.1 
| +--- com.android.support:animated-vector-drawable:23.2.1 
| | \--- com.android.support:support-vector-drawable:23.2.1 
| |   \--- com.android.support:support-v4:23.2.1 (*) 
| \--- com.android.support:support-vector-drawable:23.2.1 (*) 
+--- com.android.support:recyclerview-v7:23.2.1 
| +--- com.android.support:support-v4:23.2.1 (*) 
| \--- com.android.support:support-annotations:23.2.1 
+--- com.android.support:design:23.2.1 
| +--- com.android.support:support-v4:23.2.1 (*) 
| +--- com.android.support:appcompat-v7:23.2.1 (*) 
| \--- com.android.support:recyclerview-v7:23.2.1 (*) 
+--- com.android.support:percent:23.2.1 
| \--- com.android.support:support-v4:23.2.1 (*) 
\--- project :mylibrary 
    \--- com.android.support:appcompat-v7:23.2.0 -> 23.2.1 (*) 

Hinweis der letzten Zeile, wo die compat lib für mylibrary zu von 23.2.0 auf 23.2.1 aktualisiert wird. Dies wird für jede Bibliothek mit derselben Gruppen- und Namenskomponente passieren.

Ja, es kann Probleme geben, wenn eine Version so aktualisiert wird. Wenn die geänderte Version der Bibliothek nicht abwärtskompatibel zur vorherigen Version ist, kann der Code, der auf die ältere Version verweist, möglicherweise nicht mit fehlenden Methoden kompiliert werden. Für Micro- und Minor-Versionsupdates ist dies normalerweise kein Problem, aber für größere Versionsupdates kann es sein. Es hängt vollständig von der spezifischen Situation ab.

Verwandte Themen