web-dev-qa-db-fra.com

Android NDK: AVERTISSEMENT: 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 NDK r8e. 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 que cela peut causer des problèmes.

40
glo

Il semble que vous utilisiez Android-9 en tant que moteur d'exécution. Tu peux mettre APP_PLATFORM := Android-8 dans votre Application.mk fichier et l'avertissement disparaîtra.

60
j.holetzeck

La raison derrière l'avertissement/l'erreur est qu'il veut vous faire savoir qu'il compile le code natif pour une plate-forme cible supérieure à votre "minimum" spécifié dans le manifeste. Il s'agit essentiellement de faire attention à l'utilisation de fonctionnalités non prises en charge sur l'ancien système d'exploitation. Le changement Application.mk est correct et ne devrait pas avoir de réels effets négatifs sur le code compilé.

~~ Solutions alternatives.

Pour r8, vous pouvez modifier les paramètres de build pour le considérer comme un avertissement plutôt qu'une erreur. Cela a fonctionné dans r8 mais n'est qu'une correction partielle dans r9.

Pour NDK rev r9 (fonctionne également dans d'autres revs mais l'emplacement/la ligne # peut différer)

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

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

# $ (appelez __ndk_info, AVERTISSEMENT: APP_PLATFORM $ (APP_PLATFORM) est plus grand que Android: minSdkVersion $ (APP_MIN_PLATFORM_LEVEL) dans $ (APP_MANIFEST))

Un caractère, 30 secondes de correction ... allez déboguer le code natif.

13
DevByStarlight

Si vous souhaitez compiler votre bibliothèque native pour une version plus récente que votre minSdkVersion, vous pouvez simplement configurer Eclipse pour changer l'erreur en avertissement. Cela peut être utile si vous savez que votre Java ne va PAS charger la bibliothèque native dans les anciennes versions d'Android. (Attention: si vous ne le garantissez pas, alors chargez votre bibliothèque native sur les versions de Android plus ancien que ce qui est spécifié dans votre APP_PLATFORM peut échouer et planter l'application s'il y a des liens de bibliothèque dynamique non satisfaits - 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 version antérieure. Mais tant que votre côté Java côté le sait et s'assure que loadLibrary n'est jamais appelé sur les anciennes versions, alors tu vas bien.)

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

Dans Eclipse:

- 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 gars de Google n'a pas noté, c'est que vous devez également utiliser le bouton "Déplacer vers le haut" dans les paramètres pour déplacer votre nouvelle règle vers le sommet parce que sinon d'autres règles plus génériques l'occultent et cela ne fonctionne pas.

1
Todor K.