2016-05-18 12 views
6

nie rozumiem ten komunikat o błędzieuses-sdk: minSdkVersion 15 nie może być mniejsza niż 16 wersji zadeklarowanej w bibliotece

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 

Ponieważ linia z AndroidManifest.xml wygląda następująco:

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

Skąd pochodzi?

Używam jonowej do zbudowania mojej aplikacji. Ale nie sądzę, że to jest problem.

+0

'minSdkVersion __ targetSdkVersion __' i' compileSdkVersion __' w Build.gradle (moduł: app) –

+0

Używasz zewnętrznych bibliotek? –

+0

@ YoannHercouet Po prostu używam jonowego frameworka. Nie wiem, czy używają zewnętrznych bibliotek. Być może wtyczki jonowe są bibliotekami zewnętrznymi. Błąd występuje, ponieważ wtyczka paypal oczekuje minimalnej wersji sdk 16 –

Odpowiedz

12

Może znalazłem problem.

nie chcą overwride się build.gradle, ponieważ Cordova utworzyć ten plik dynamicznie. Ale szukałem, dlaczego ten cdvMinSdkVersion zwraca nieprawidłową wartość. A powodem był ten barcodescanner-plugin. Plik wtyczki Gradle ma tej linii

ext.cdvMinSdkVersion = 15 

który nadpisywania moje wartości z AndroidManifest.xml. Po usunięciu i dodaniu wtyczki ponownie działa. Ale nie wiem dlaczego? Może ktoś mógłby wyjaśnić kolejność różnych skryptów gradle.

+0

Proszę pana, zasłużyć na piwo !! –

+0

To rozwiązało mój problem, świetna robota! – JoeriShoeby

+0

Zrób 3 piwa. Mogę potwierdzić, że ta poprawka zadziała. Pracuję nad Cordova 6.2.0, i to się udało! – tfrascaroli

5

Od wersji 2.14.0 minSdkVersion została zwiększona do 16. Jeśli wolisz korzystać z aplikacji o niższej wartości minSdkVersion i chcesz wykorzystać najnowszy pakiet SDK, wyłącz PayPal dla wersji poniżej API 16, dodaj xmlns:tools="http://schemas.android.com/tools do środka deklaracja xml manifest, a następnie dodaj następujący fragment do AndroidManifest.xml:

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

Oto niektóre kontekst zrozumieć rzeczy:

domyślnie, podczas importowania biblioteki o wartości minSdkVersion, który jest wyższy niż główny plik manifestu, wystąpi błąd i biblioteka nie może być imp orted. Aby narzędzie do łączenia zignorowało ten konflikt i zaimportowało bibliotekę z zachowaniem niższej wartości minSdkVersion aplikacji, dodaj atrybut overrideLibrary do tagu. Wartością atrybutu może być jedna lub więcej nazw pakietów bibliotecznych (oddzielonych przecinkami), wskazujących biblioteki, które mogą zastąpić minSdkVersion głównego manifestu.

Na przykład, jeśli główny manifestu Twojej aplikacji stosuje overrideLibrary tak:

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

Następnie po manifeście mogą być łączone bez błędu dotyczących < wykorzystuje-sdk> tag, połączone manifest utrzymuje minSdkVersion = "2" z manifestu aplikacji.

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