Phonegap/Cordova Application des pauses dans Jelly Bean - Access-Control-Allow-Origin et setAllowUniversalAccessFromFileUrls

J'ai été en développement* avec Cordova (aka Phonegap) pour Android depuis plus d'un an maintenant et suis en train de faire mes applications disponibles pour exécuter en Jelly Bean, mais j'obtiens l'erreur suivante:

XMLHttpRequest cannot load http://127.0.0.1:40582/[somerandomstring]. Origin null is not allowed by Access-Control-Allow-Origin. at null:1

(et les mêmes erreurs par la suite ajax demande à utiliser localhost ou file://)
Juste pour tester, je vous l'accorde l'accès à tout dans l'config.xml dans la section Access-Control-Allow-Origin

<access origin="*"/>
<access origin="http://127.0.0.1*"/>

Dans mon recherche j'ai découvert l'erreur est liée à un changement de paramètre que Google a fait comme d'Android Jelly Bean. Voici ce que j'ai trouvé:
De: https://git-wip-us.apache.org/repos/asf?p=incubator-cordova-android.git;a=commitdiff;h=07439ff9

-- C'est à partir de org.apache.cordoue.CordovaWebView

//Jellybean rightfully tried to lock this down. Too bad they didn't give us a whitelist
//while we do this
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
    Level16Apis.enableUniversalAccess(settings);

-- C'est aussi à partir de org.apache.cordoue.CordovaWebView

//Wrapping these functions in their own class prevents warnings in adb like:
//VFY: unable to resolve virtual method 285: Landroid/webkit/WebSettings;.setAllowUniversalAccessFromFileURLs
@TargetApi(16)
private static class Level16Apis {
    static void enableUniversalAccess(WebSettings settings) {
         settings.setAllowUniversalAccessFromFileURLs(true);
     }
}

C'est bien que Cordova essayé de contourner le changer, mais malheureusement cela ne fonctionne pas...

Dans ces threads ici et ici j'ai trouvé une solution commune, tout simplement modifier un paramètre comme suit:

if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
    super.appView.getSettings().setAllowUniversalAccessFromFileURLs(true);    
}

Maintenant, je reçois le message d'avertissement suivant:

Call requires API level 16 (current min is 8) 
android.webkit.WebSettings#setAllowUniversalAccessFromFileURLs

Voici ce que j'ai pour l'api dans mon AndroidManifest.xml

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

Pourquoi il m'oblige à changer le minSdkVersion à 16 plutôt que de suivre mon targetSdkVersion qui est de 16?

Pensées?

Notes: je suis actuellement à l'aide de Cordova 2.0, Eclipse Indigo SR2 (toutes les mises à jour en cours), kit SDK d'Android (toutes les mises à jour en cours), sur Windows 7 à la Maison (toutes les mises à jour en cours), Java 7 Update 7.

Quel est l'objectif de version du SDK dans votre manifeste?
min est de 8, la cible est de 16
Je pense que j'ai tout compris. Ce n'est pas idéal, mais au moins ça marche. Merci de proposer votre aide.
Pouvez-vous me donner un scénario de reproduction? Je sais que vous avez travaillé autour d'elle, mais nous ne voulons pas de ce bogue dans le cadre.
Télécharger Phonegap/Cordova 2.0 à partir de phonegap.com, extraire le zip. Copiez l'exemple de projet à partir de la lib/Android/ répertoire de votre répertoire Workspace Eclipse. Dans Eclipse, a Fichier->New->puis d'Autres dans l'assistant d'élargir Android et sélectionnez "Android Projet de Code Existant", prochain coup, accédez à l'exemple de projet, cliquez sur "Terminer". Modifier "AndroidManifest.xml" dans l'éditeur de texte, ajouter android:targetSdkVersion="16" pour les uses-sdk tag. Edit "du projet.les propriétés" et de changer la cible de l'api à 16. Créer AVD l'exécution de l'API 16. L'exécution du projet en tant qu'application dans l'AVD. Vérifier logcat pour voir XMLHttpRequest erreurs...

OriginalL'auteur mason81 | 2012-09-13