40 votes

Android NDK : WARNING : APP_PLATFORM Android-9 est plus grand que Android:minSdkVersion 8

J'obtiens l'avertissement suivant lors de la compilation de mon projet cocos2d-x avec cygwin.

`/cygdrive/e/project/MyGame/proj.android `
/cygdrive/e/android-ndk-r8e/build/core/add-application.mk:128: Android NDK: WARNING:APP_PLATFORM android-9 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml

J'utilise la version r8e du NDK. Ma version minimale du SDK est 8 dans mon AndroidManifest.xml mais je ne spécifie nulle part APP_PLATFORM comme Android-9. Comment puis-je changer cela en 8.

Quelqu'un peut-il me dire comment résoudre cet avertissement, car je pense qu'il peut être à l'origine de problèmes.

60voto

j.holetzeck Points 1790

Il semble que vous utilisiez Android-9 comme runtime. Vous pouvez mettre APP_PLATFORM := android-8 dans votre Application.mk et l'avertissement disparaîtra.

13voto

DevByStarlight Points 366

La raison de l'avertissement/erreur est qu'il veut vous faire savoir qu'il compile le code natif pour une plate-forme cible supérieure au "minimum" spécifié dans le manifeste. En gros, il vous dit "faites attention à ne pas utiliser des fonctionnalités qui ne sont pas prises en charge par l'ancien système d'exploitation". La modification du fichier Application.mk est correcte et ne devrait pas avoir d'effets négatifs sur le code compilé.

~~ Solutions alternatives.

Pour la r8, vous pouvez modifier les paramètres de construction pour que ce soit considéré comme un avertissement plutôt qu'une erreur. Cela fonctionnait dans la r8 mais n'est qu'une correction partielle dans la r9.

Pour NDK rev r9 (fonctionne aussi dans d'autres revs mais l'emplacement/le numéro de ligne peut différer)

${NDK}/build/core/add-application.mk ligne 138

ajouter "#" au début de la ligne.

# $(call __ndk_info,WARNING : APP_PLATFORM $(APP_PLATFORM) is larger than Android:minSdkVersion $(APP_MIN_PLATFORM_LEVEL) in $(APP_MANIFEST))

Un caractère, une solution en 30 secondes... allez déboguer du code natif.

1voto

Todor K. Points 56

Si vous souhaitez compiler votre bibliothèque native pour une version plus récente que votre minSdkVersion, vous pouvez simplement configurer Eclipse pour transformer l'erreur en avertissement. Cela peut être utile si vous savez que votre code Java ne va PAS charger la bibliothèque native dans les anciennes versions d'Android. (Attention : Si vous ne le garantissez pas, le chargement de votre bibliothèque native sur des versions d'Android plus anciennes que celles spécifiées dans votre APP_PLATFORM peut échouer et faire planter l'application s'il y a des liens dynamiques de bibliothèque insatisfaits - par exemple, si votre APP_PLATFORM est 9 et que vous utilisez OpenSLES, cela échouera si vous essayez d'utiliser JNI sur Android 2.2 ou antérieur. Mais tant que votre côté Java est au courant et s'assure que loadLibrary n'est jamais appelé sur des versions plus anciennes, alors tout va bien).

Vous pouvez modifier les paramètres d'Eclipse en suivant les étapes suivantes, fournies par une personne de Google (à l'adresse ce lien ) (mais aussi, voir ma note IMPORTANTE ci-dessous) :

En éclipse :

- Window -> Preferences -> C/C++ -> Build -> Settings
- Select CDT GNU C/C++ Error Parser
- In the Error Parser options at the bottom, add a new entry with the following contents:

Severity: Warning
Pattern: (.*?):(\d+): Android NDK: WARNING:(.*) 
File: $1
Line: $2
Description: $3

IMPORTANT ! Ce que le responsable de Google n'a pas noté, c'est que vous devez également utiliser le bouton "Move Up" dans les paramètres pour déplacer votre nouvelle règle vers le haut, car sinon d'autres règles plus génériques l'éclipsent et cela ne fonctionne pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X