web-dev-qa-db-fra.com

uses-sdk: minSdkVersion 15 ne peut pas être inférieur à la version 16 déclarée dans la bibliothèque

Je ne comprends pas ce message d'erreur 

  C:\Program Files (x86)\Jenkins\workspace\__temp-mobile-prev\platforms\Android\AndroidManifest.xml:67:5 Error:
        uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in library C:\Program Files (x86)\Jenkins\workspace\__temp-mobile-prev\platforms\Android\build\intermediates\exploded-aar\com.Paypal.sdk\Paypal-Android-sdk\2.14.2\AndroidManifest.xml
        Suggestion: use tools:overrideLibrary="com.Paypal.Android.sdk.payments" to force usage

Parce que line 67 of AndroidManifest.xml ressemble à:

<uses-sdk Android:minSdkVersion="18" Android:targetSdkVersion="22" />

D'où vient 15

J'utilise ionic pour créer mon application. Mais je ne pense pas que ce soit le problème. 

12
Simon Schüpbach

J'ai peut-être trouvé le problème.

Je ne veux pas écraser le build.gradle, car Cordova crée ce fichier de manière dynamique. Mais j’ai cherché pourquoi cdvMinSdkVersion renvoie une valeur erronée. Et la raison en était ce barcodescanner-plugin . Le fichier de classement du plugin a cette ligne 

ext.cdvMinSdkVersion = 15

qui écrase ma valeur de AndroidManifest.xml. Après avoir retiré et ajouté le plugin à nouveau, cela fonctionne. Mais je ne sais pas pourquoi? Peut-être que quelqu'un pourrait expliquer l'ordre des différents scripts de niveaux.

17
Simon Schüpbach

Depuis la version 2.14.0, minSdkVersion a été augmenté à 16. Si vous préférez utiliser votre application sur une version inférieure de minSdkVersion et souhaitez utiliser le dernier SDK, veuillez désactiver Paypal pour les versions inférieures à l'API 16, ajoutez xmlns:tools="http://schemas.Android.com/tools dans la déclaration xml du manifeste et ajoutez l'extrait suivant à votre fichier AndroidManifest.xml:

<uses-sdk Android:minSdkVersion="INSERT_YOUR_DESIRED_minSdkVersion_HERE" tools:overrideLibrary="com.Paypal.Android.sdk.payments"/>
7
user6738679

Dans le cas d'applications hybrides/ioniques, ce problème pourrait être résolu en modifiant minSdkVersion dans config.xml, c'est ce que j'ai fait.

4
Naga

Cela a résolu mon problème . Faites un clic droit sur le dossier de l'application dans Android Studio, sélectionnez "Ouvrir les paramètres du module" | ou appuyez simplement sur F4. Allez dans l'onglet Flavors et changez la version Min Sdk à la plus récente . Problème résolu.

2

Voici un contexte pour comprendre les choses:

Par défaut, lors de l'importation d'une bibliothèque avec une valeur minSdkVersion supérieure au fichier manifeste principal, une erreur se produit et la bibliothèque ne peut pas être importée. Pour que l'outil de fusion ignore le conflit et importe la bibliothèque tout en conservant la valeur minSdkVersion inférieure de votre application, ajoutez l'attribut overrideLibrary à la balise. La valeur de l'attribut peut être un ou plusieurs noms de package de bibliothèque (séparés par des virgules), indiquant les bibliothèques pouvant remplacer le minSdkVersion du manifeste principal.

Par exemple, si le manifeste principal de votre application applique overrideLibrary, procédez comme suit:

<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"/>

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

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

J'utilise la suggestion de @ Naga, et c'est du travail. 
config.xml que je change n’est pas à la racine du projet, mais en platforms/Android/app/src/main/res/xml/config.xml

et minSdkVersion dans AndroidManifests.xml ne sont pas écrasés à nouveau

0
Imam Sutono

Le problème pour moi était dans cordova-plugin-browsertab .

Vous devez remplacer la ligne 1 du my_project/plugins/cordova-plugin-browsertab/src/Android/BrowserTab.gradle par

def minSdkVersion = 19

Assurez-vous que le SDK minimum est ajouté à votre config.xml

<preference name="Android-minSdkVersion" value="19" />

Ensuite, supprimez et ajoutez cordova-Android par:

cordova platform remove Android
cordova platform add Android
0
Chris Underdown