2010-07-22 7 views
4

J'écris une application qui est compatible avec Android 1.6, mais je voudrais donner aux utilisateurs d'Android 2.2 la possibilité de déplacer l'installation de l'application sur leur carte SD.Définir l'emplacement d'installation pour Android 1.6?

Comment puis-je compiler mon application pour la version 1.6, tout en permettant aux utilisateurs 2.2 de l'installer sur leur disque dur?

Répondre

12

Dans votre manifeste:

  • En <manifest>, ajouter "android:installLocation="preferExternal"
  • Gardez votre uses-sdk actuelle comme "<uses-sdk android:minSdkVersion="4">"

Ensuite, allez à Projet> Propriétés> Android (à gauche), modifiez la cible de génération à 2.2 et vous êtes tous définis.

Votre projet va générer en utilisant 2.2 (mais nécessite seulement 1.6), mais les périphériques exécutant 1.6 ignoreront simplement votre nouveau paramètre "installLocation" dans le manifeste. Veillez juste à ne pas ajouter de matériel 2.2 dans votre code actuel, car le compilateur ne l'attrapera plus.

+0

D'accord. Une sorte de douleur, mais je suppose que ça va devoir faire. – GuyNoir

+1

Vous pouvez trouver plus d'informations ici: http://developer.android.com/guide/appendix/install-location.html sous "Compatibilité descendante" –

+3

Une recommandation: Avant de déployer une nouvelle version, définissez la version cible de construction à 1.6 et faire une construction propre. Si vous obtenez des erreurs de compilation, vous savez que vous avez accidentellement introduit des fonctionnalités spécifiques à 2.2, et votre application se bloquera sous la version 1.6. Si tout va bien, revenez à 2.2. – EboMike

0

Ce n'est pas tout à fait aussi transparent que le suggère le guide du développeur. Tout d'abord, l'application ne construit pas lorsque le installLocation est présent dans le manifeste et la cible de construction est réglé sur autre chose que 2.2:

Ainsi, afin de tester en arrière-compatibililty en fixant la cible de construction à 1,6 , le manifeste doit également être modifié. Deuxièmement, une fois que la cible de génération a la valeur 2.2, je ne peux pas choisir un émulateur avec un niveau API inférieur pour le test. Je peux toujours démarrer manuellement un émulateur 1.6 et lancer l'application dessus, mais je suis curieux de savoir si mon application apparaîtra sur Android Market pour les appareils 1.6 si ma cible de build est 2.2 (même si minSdkVersion = 4). Je n'ai pas de périphérique à tester. Quelqu'un peut-il confirmer que cela n'affecte pas la disponibilité sur le marché?

Enfin, cet avertissement reste:

Attribute minSdkVersion (4) is lower than the project target API level (8) 
+0

Je peux confirmer, que la disponibilité sur le marché n'est pas affectée. J'utilise l'approche décrite à partir des pages officielles des développeurs Android. Les exigences du marché pour mon application sont affichées comme "Android version 1.6 ou supérieure". J'ai été en mesure de découvrir, télécharger et exécuter l'application du marché sans problèmes en utilisant un HTC Magic fonctionnant sous Android 1.6. – Philipp

Questions connexes