2016-05-18 2 views
6

Ich verstehe nicht, diese FehlermeldungUses-sdk: minSdkVersion 15 nicht kleiner sein als Version 16 in der Bibliothek erklärt

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 

Da Linie von AndroidManifest.xml wie folgt aussieht:

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

Woher kommt ?

Ich verwende ionic, um meine App zu bauen. Aber ich denke nicht, dass dies das Problem ist.

+0

'minSdkVersion __ targetSdkVersion __' und' compileSdkVersion __' in Build.gradle (Modul: app) –

+0

Haben Sie externe Bibliotheken verwenden? –

+0

@YoannHercouet Ich benutze nur das ionische Gerüst. Ich weiß nicht, ob sie externe Bibliotheken verwenden. Vielleicht sind die ionischen Plugins externe Bibliotheken. Der Fehler tritt auf, weil das Paypal-Plugin eine minimale SDK-Version von 16 –

Antwort

12

Vielleicht habe ich das Problem gefunden.

Ich möchte die build.gradle nicht überschreiben, weil cordova diese Datei dynamisch erstellen. Aber ich habe gesucht, warum cdvMinSdkVersion einen falschen Wert zurückgibt. Und der Grund war diese barcodescanner-plugin. Das Plugin gradle Datei hat diese Linie

ext.cdvMinSdkVersion = 15 

, die aus meinen Wert überschreiben AndroidManifest.xml. Nachdem ich das Plugin wieder entfernen und hinzufügen kann, funktioniert es. Aber ich weiß nicht warum? Vielleicht könnte jemand die Reihenfolge der verschiedenen Skripte erklären.

+0

erwarten Sie, Sir, verdienen ein Bier! –

+0

Das hat mein Problem gelöst, gute Arbeit! – JoeriShoeby

+0

Machen Sie 3 Biere. Ich kann bestätigen, dass dieser Fix funktioniert. Ich arbeite an Cordova 6.2.0, und es hat den Trick gemacht! – tfrascaroli

5

Ab Version 2.14.0 wurde die minSdkVersion auf 16 erhöht. Wenn Sie Ihre App auf einer niedrigeren minSdkVersion haben und das neueste SDK nutzen möchten, deaktivieren Sie bitte PayPal für Versionen unter API 16, fügen Sie xmlns:tools="http://schemas.android.com/tools hinzu das xML-Deklaration Manifest, und fügen Sie den folgenden Code-Schnipsel zu Ihrem AndroidManifest.xml:

<uses-sdk android:minSdkVersion="INSERT_YOUR_DESIRED_minSdkVersion_HERE" tools:overrideLibrary="com.paypal.android.sdk.payments"/> 
0

Hier sind einige Kontexte, die Dinge zu verstehen:

standardmäßig, wenn eine Bibliothek mit einem minSdkVersion Wert importieren, die höher sind als In der Hauptmanifestdatei tritt ein Fehler auf und die Bibliothek kann nicht imp sein sortiert. Damit das Merger-Tool diesen Konflikt ignoriert und die Bibliothek importiert, während der niedrigere MinSdkVersion-Wert der App beibehalten wird, fügen Sie dem Tag das Attribut "overrideLibrary" hinzu. Der Attributwert kann aus einem oder mehreren Bibliothekspaketnamen (durch Kommas getrennt) bestehen und die Bibliotheken angeben, die die MinSdkVersion des Hauptmanifests überschreiben können.

Zum Beispiel, wenn Ihre Anwendung Haupt manifest gilt overrideLibrary wie folgt aus:

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

Dann wird das folgende Manifest kann ohne Fehler zusammengeführt werden in Bezug auf die < verwendet-sdk> Tag, und das fusionierte Manifest hält minSdkVersion = "2" aus dem App-Manifest

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