Quelles sont les différences entre "version minimale de sdk/version de sdk cible" et "version de compilation sdk"? Je sais ce que signifie sdk min et target, mais que signifie compilation de la version de sdk?
Dans Eclipse, j'ai min/max et sdk cible, mais dans Android studio, ces trois paramètres sont définis.
la version minimale de sdk est la version la plus ancienne du SDK Android sur lequel votre application peut être exécutée. Cela est généralement dû à un problème avec les API antérieures, à un manque de fonctionnalité ou à un autre problème de comportement.
version de sdk cible est la version sur laquelle votre application était ciblée . Idéalement, cela est dû à des conditions d’exécution optimales. Si vous deviez "créer votre application pour la version 19", c'est ici que cela serait spécifié. Il peut fonctionner sur des versions antérieures ou ultérieures, mais c’est ce que vous souhaitiez. Cela sert principalement à indiquer si votre application est actuellement utilisée sur le marché, etc.
Le version de compilation sdk est la version de Android que votre IDE (ou un autre moyen de compilation, je suppose) utilise pour créer votre application lorsque vous publiez un .apk
fichier. Ceci est utile pour tester votre application car il est généralement nécessaire de la compiler au fur et à mesure que vous la développez. Comme ce sera la version à compiler en APK, ce sera naturellement la version de votre release. De même, il est conseillé d’avoir cette correspondance avec la version de sdk que vous ciblez.
La version de sdk min est la version minimale du système d'exploitation Android requise pour exécuter votre application.
La version du sdk cible est la version de Android sur laquelle votre application a été créée.
La version de sdk de compilation est la version de Android que les outils de création utilisent pour compiler et compiler l'application afin de libérer, exécuter ou déboguer.
Généralement , la version compilée du sdk et la version du sdk cible sont identiques.
La formule est
minSdkVersion <= targetSdkVersion <= compileSdkVersion
minSdkVersion - est un marqueur qui définit une version minimale de Android sur laquelle l'application pourra être installée. En outre, il est utilisé par Lint pour empêcher l’appel d’API qui n’existe pas. En outre, cela a un impact sur le temps de construction. Vous pouvez donc utiliser des versions différentes pour remplacer minSdkVersion au maximum pendant le développement. Il sera utile de rendre la construction plus rapide en utilisant toutes les améliorations apportées par l'équipe Android. Par exemple, certaines fonctionnalités Java 8 ne sont disponibles qu'à partir d'une version spécifique de minSdkVersion.
targetSdkVersion - dit Android système pour activer des changements de comportement spécifiques.
Par exemple:
À partir de Android 6.0 (API de niveau 23) Runtime Permissions
ont été introduits. Si vous définissez targetSdkVersion
sur 22 ou moins, votre application ne demande aucune autorisation à un utilisateur au moment de l'exécution.
À partir de Android 8.0 (API niveau 26), tous les notifications
doivent être affectés à un canal, sinon celui-ci n'apparaîtra pas. Sur les appareils exécutant Android 7.1 (API de niveau 25) et inférieur, les utilisateurs ne peuvent gérer les notifications que par application (chaque application ne dispose en effet que d'un canal sur Android 7.1 et versions antérieures). .
À partir de Android 9 (API niveau 28), Web-based data directories separated by process
. Si targetSdkVersion
a 28 ans et plus et que vous créez plusieurs WebView
dans différents processus, vous obtiendrez Java.lang.RuntimeException
compileSdkVersion - il s'agit en fait de la version de la plate-forme SDK et indique à Gradle quel Android SDK utiliser pour la compilation. Lorsque vous souhaitez utiliser de nouvelles fonctionnalités ou déboguer des fichiers .Java
à partir de Android SDK, vous devez vous occuper de compileSdkVersion. compileSdkVersion
n'est pas inclus dans votre APK : il est purement utilisé en compile time
. Changer votre compileSdkVersion ne change pas le comportement à l'exécution. Il peut générer par exemple de nouveaux avertissements/erreurs du compilateur. Par conséquent, il est fortement recommandé de toujours compiler avec le dernier SDK. Vous obtiendrez tous les avantages des nouvelles vérifications de compilation sur le code existant, éviterez les API obsolètes et serez prêt à utiliser de nouvelles API. Un autre fait est compileSdkVersion >= Support Library version
Vous pouvez en lire plus à ce sujet ici . Aussi, je vous recommande de jeter un coup d'œil à l'exemple de migration à Android 8.0.
Voir ici, il est préférable de spécifier dans la version du sdk cible la dernière version publiée de l'API: Quelle est la différence entre compileSdkVersion et targetSdkVersion?
compileSdkVersion: compileSdkVersion est la version de l'API avec laquelle l'application est compilée. Cela signifie que vous pouvez utiliser Android les fonctionnalités de l'API incluses dans cette version de l'API (ainsi que toutes les versions précédentes, bien évidemment). Si vous essayez d'utiliser les fonctionnalités de l'API 16 mais que vous définissez compileSdkVersion sur 15, vous obtiendrez une erreur de compilation. Si vous définissez compileSdkVersion sur 16, vous pouvez toujours exécuter l'application sur un périphérique API 15.
minSdkVersion: La version minimale de sdk est la version minimale du système d'exploitation Android requise pour exécuter votre application.
targetSdkVersion: La version du sdk cible est la version sur laquelle votre application est destinée à être exécutée.