2017-09-27 5 views
0

J'ai une bibliothèque personnalisée avec plusieurs classes d'utilitaires. Je l'ai utilisé jusqu'à présent dans un seul projet avec min SDK 21.Utilisation de la même bibliothèque personnalisée dans des projets avec différents SDK min version

Maintenant, je veux réutiliser l'une des classes dans un autre projet, qui a min SDK 14. Le code de classe est très bien avec la version 14, mais Gradle n'aime pas que min SDK de la bibliothèque est 21.

Quelle est l'approche recommandée pour ce genre de problème? Je voudrais réutiliser le code, pas pour le dupliquer.

+0

Avez-vous réussi à obtenir le code source de cette bibliothèque? je veux dire le module de bibliothèque de Github. –

+0

@HareshChhelana Pensez-vous que le code source est pertinent à cette question? Pourquoi? – ilomambo

+0

Si vous avez du code alors gardez la classe qui est nécessaire pour vous au lieu de la bibliothèque entière. –

Répondre

1

Vous pouvez utiliser Manifest Merger pour remplacer <uses-sdk> pour les bibliothèques importées.

De la documentation officielle:

Par défaut, lors de l'importation d'une bibliothèque avec une valeur minSdkVersion qui est plus élevé que le fichier manifeste principal, une erreur se produit et la bibliothèque ne peuvent pas être importés. Pour l'outil de fusion ignorer ce conflit et importer la bibliothèque tout en gardant la valeur inférieure minSdkVersion de votre application, ajoutez l'attribut overrideLibrary à la balise. La valeur attribut peut être un ou plusieurs noms de paquets bibliothèque (séparés par des virgules), indiquant les bibliothèques qui peuvent remplacer minSdkVersion du manifeste principal.

Par exemple, si votre manifeste principale application applique overrideLibrary comme ceci:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example.app" 
      xmlns:tools="http://schemas.android.com/tools"> 
    <uses-sdk android:targetSdkVersion="22" android:minSdkVersion="2" 
      tools:overrideLibrary="com.example.lib1, com.example.lib2"/> 
... 

Puis le manifeste suivant peut être fusionné sans une erreur concernant l'étiquette <uses-sdk>, et le manifeste fusionné conserve minSdkVersion="2" de le manifeste de l'application.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example.lib1"> 
    <uses-sdk android:minSdkVersion="4" /> 
...