2014-11-25 12 views
24

Questa è un'app android di PhoneGap 3.5/Cordova 3. In www/config.xml ho:Come posso specificare l'SDK minimo in PhoneGap? Si sta ignorando android-minsdkversion in config.xml

<preference name="android-minSdkVersion" value="19"> 
<preference name="android-targetSdkVersion" value="19"> 

Tuttavia, quando ho costruire, esso crea un AndroidManifest.xml con:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" /> 

Il risultato è che le persone con le versioni SDK inferiore a 19 possono installare la mia app dal negozio. Da dove arriva quel 10 e come posso cambiarlo? A causa della stranezza con Viewport, il comportamento della mia app è sospetto sui sistemi operativi inferiori a 4.4 e sto già ottenendo recensioni a 1 stella da parte di utenti 4.2.2.

risposta

44

Con la versione precedente di Cordova CLI, ho modificato manualmente AndroidManifest.xml per modificare alcune impostazioni (modalità di avvio, minsdk ...) come si fa nella risposta.

E con Cordova 3.5. qualcosa le cose hanno iniziato a non funzionare correttamente e alcune modifiche sono andate perse ogni volta che ho creato il progetto.

Ora ho aggiunto quelle linee in config.xml e le impostazioni vengono aggiornate automaticamente:

<platform name="android"> 
    <preference name="AndroidLaunchMode" value="singleTop"/> 
    <preference name="android-minSdkVersion" value="14" /> 
    <icon src="res/android/xhdpi.png" /> 
    <icon src="res/android/ldpi.png" density="ldpi" /> 
    <icon src="res/android/mdpi.png" density="mdpi" /> 
    <icon src="res/android/hdpi.png" density="hdpi" /> 
    <icon src="res/android/xhdpi.png" density="xhdpi" /> 
</platform> 

Il vantaggio è che ora posso eliminare la piattaforma Android e ricrearlo senza perdere qualsiasi ambiente.

Come PhoneGap è stato aggiornato per essere in linea con Cordova, le preferenze in config.xml dovrebbero funzionare con la nuova versione, e forse si vedrà il manuale aggiornato essere perso, come è successo a me ...

+0

Ricominciare con l'ultimo Cordova mi ha indirizzato questo problema. – DevOfZot

0

sono stato in grado di risolvere questo problema modificando manualmente le piattaforme/android/AndroidManifest.xml:

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

La Phonegap documentation sembra implicare che questo file dovrebbe ereditare il valore del android-minSdkVersion preferenza, ma deve essere cambiato manualmente La preferenza di android-minSdkVersion non sembra fare nulla per quanto posso dire.

+0

targetSdk è come consigliato-sdk (non applica o limita), minSdk è il requisito minimo di Sdk.Sì, è necessario modificare il min-sdk poiché si desidera il requisito minimo. Sdk – vdj4y

+3

Ripensandoci, non consiglio di seguire questa strada: la modifica manuale di piattaforme/android/AndroidManifest.xml ha causato la mancata sincronizzazione del Manifest con le altre varie copie di AndroidManifest.xml che viene sparpagliato attorno alle piattaforme/sottodirectory Android, il che ha portato ad altri problemi che mi hanno indotto a nuke e repave. – DevOfZot

20

Modifica e miglioramento risposta:

Per rispondere, è meglio iniziare con la versione Build o il livello API. Livello API è un valore intero che identifica in modo univoco la revisione dell'API framework offerta da una versione della piattaforma Android.

API Level 8 == android Platform 2.3(ginger bread) 
API Level 17 == android Platform 4.2(jelly bean) 

vedere confronto completo APILevel e la sua AndroidPlatform controllare here


targetSdk deve essere utilizzato da solo PhoneGap. Questo indica a PhoneGap di utilizzare determinati APILevel per creare questa app. Questo non ha lo scopo di limitare l'utente a scaricare l'app. È più come dire "L'app è ottimizzata per questo APILevel".esempio

<preference name="android-targetSdkVersion" value="17"/> //android 4.2 

Questa applicazione è costruire (optimized) utilizzando APILevel 17 (che è JELLYBEAN o androidPlatform4.2)


minSdk dall'altro, limitare l'utente/dispositivo. minSdk è il requisito minimo di Sdk per utente/dispositivo. Qualsiasi dispositivo con livello APIlevel inferiore a APILevel utilizzato da minSdk, non sarà in grado di scaricare questa app. esempio:

<preference name="android-minSdkVersion" value="11"/> //android 3.0 

per scaricare questa applicazione, il dispositivo è almeno a funzionare su Android 3.0 (APILevel 11)


Infine, se usati insieme:

<preference name="android-minSdkVersion" value="11"/> //android 3.0 

<preference name="android-targetSdkVersion" value="17"/> //android 4.2 

Questa affermazione significa che questa app è ottimizzata per android4.2, con il requisito minimo di Android 3,0


Doc: http://docs.build.phonegap.com/en_US/configuring_preferences.md.html#Preferences

2

Per chiunque arrivare qui alla ricerca di un modo per impostare una versione obiettivo specifico, ho trovato questo: Ho appena avuto lo stesso problema. Ho dovuto cambiare il target:

Obiettivo del progetto.

target = android-22 Questo dovrebbe essere fatto in due file:

frontend/piattaforme/Android/project.properties frontend/piattaforme/Android/CordovaLib/project.properties

anche il manifesto dovrebbe essere aggiornato:

Da Sebastian risposta posizionato qui: Cordova : [Error: Please install Android target: "android-21"

18

FASE 1) yourapp file/config.xml <platform name="android"> tag aggiungono due preferenza

<platform name="android"> 
    <preference name="android-minSdkVersion" value="14" /> 
    <preference name="android-targetSdkVersion" value="19" /> 
</platform> 

FASE 2)cordova platform rm android run codice cmd

FASE 3)cordova platform add android run codice cmd Controlla la tua AndroidManifest file .xml se l'aspetto è il seguente

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> 

ogni cosa è OKAY :)

+1

Ho usato cordova 7.1 e non ho bisogno dei passaggi 2 + 3. (AndroidManifest.xml è stato aggiornato dopo la compilazione) – jony89

Problemi correlati