2016-05-18 13 views
6

Non capisco questo messaggio di erroreusi-sdk: minSdkVersion 15 non può essere inferiore a 16 versione dichiarata in libreria

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 

Perché linea di AndroidManifest.xml assomiglia:

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

Da dove proviene ?

Io uso ionico per creare la mia app. Ma non penso che questo sia il problema.

+0

'minSdkVersion __ targetSdkVersion __' e' compileSdkVersion __' a Build.gradle (Modulo: app) –

+0

Usi librerie esterne? –

+0

@YoannHercouet Uso solo la struttura ionica. Non so se usano librerie esterne. Forse i plugin ionici sono librerie esterne. L'errore si verifica perché il plug-in paypal prevede una versione sdk minima di 16 –

risposta

12

Forse ho trovato il problema.

Non voglio sovrascrivere build.gradle, perché cordova crea questo file in modo dinamico. Ma ho cercato perché quello cdvMinSdkVersion restituisce un valore errato. E il motivo era questo barcodescanner-plugin. Il file plugin Gradle ha questa linea

ext.cdvMinSdkVersion = 15 

che sovrascrivere il mio valore da AndroidManifest.xml. Dopo aver rimosso e aggiunto nuovamente il plug-in, funziona. Ma non so perché? Forse qualcuno potrebbe spiegare l'ordine dei diversi script di gradle.

+0

Si signore, meriti una birra !! –

+0

Questo ha risolto il mio problema, ottimo lavoro! – JoeriShoeby

+0

Crea 3 birre. Posso confermare questa correzione per funzionare. Sto lavorando su Cordova 6.2.0, e ha fatto il trucco! – tfrascaroli

5

A partire dalla versione 2.14.0, la versione minSdk è stata aumentata a 16. Se si preferisce avere l'app su una versione minSdk inferiore e si desidera sfruttare l'ultimo SDK, disabilitare PayPal per le versioni sotto l'API 16, aggiungere xmlns:tools="http://schemas.android.com/tools all'interno dichiarazione XML del manifesto, e aggiungere il seguente frammento di codice al vostro AndroidManifest.xml:

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

Ecco alcuni contesto per comprendere le cose:

per impostazione predefinita, durante l'importazione di una biblioteca con un valore minSdkVersion che è superiore a quello il file manifest principale, si verifica un errore e la libreria non può essere imp orted. Per fare in modo che lo strumento di fusione ignori questo conflitto e importi la libreria mantenendo il valore minSdkVersion inferiore della tua app, aggiungi l'attributo overrideLibrary al tag. Il valore dell'attributo può essere uno o più nomi di pacchetti di librerie (separati da virgola), che indicano le librerie che possono sovrascrivere la versione minSdkVersion del manifest principale.

Per esempio, se manifesta principale della tua app applica overrideLibrary come questo:

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

Poi il seguente manifesto possono essere fusi senza un errore per quanto riguarda la < usa-sdk> tag, e il manifesto fusione continua minSdkVersion = "2" dal manifest dell'app.

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