2017-08-15 1 views
3

J'utilise Android NDK depuis des années, mais, récemment, j'ai vu le message ci-dessous quand je construit apa en utilisant NDK-build (version NDK 15)Android NDK Aide Version limitée

Android NDK: android-9 n'est pas pris en charge. En utilisant la version minimale prise en charge android-14. Applications NDK: AVERTISSEMENT: APP_PLATFORM androïde-14 est plus élevé que androïde: minSdkVersion 9

Pourquoi NDK butée d'appui niveaux Applications (3-13) inférieur androïde-14?

J'ai essayé de savoir pourquoi dans les guides NDK, https://developer.android.com/ndk/guides/stable_apis.html bien que je n'en ai toujours aucune idée. Il semble que NDK supporte toujours un niveau supérieur ou égal au niveau 3.

J'ai également supposé que l'un des drapeaux ou des fonctionnalités dont j'ai besoin en C++ peut provoquer cela. Cependant, je ne pouvais même pas trouver la moindre idée jusqu'à présent.

LOCAL_CPP_FEATURES := rtti exceptions 
APP_CPPFLAGS += -std=c++11 
APP_STL := gnustl_static 

+0

Gingerbread a incroyablement peu de périphériques actifs, et en soutenant Gingerbread signifie que des choses comme libandroid_support doivent inclure plus et donc gonflent les APK plus. Alex et MM S donnent tous deux de bons conseils sur la façon de gérer cela si vous voulez vraiment continuer à soutenir Gingerbread. –

Répondre

0

Ne pas mettre à jour la version 15 NDK si vos applications doivent fonctionner sur android-9

Selon NDK Historique des révisions (https://developer.android.com/ndk/downloads/revision_history.html),

Android 2.3 (Android -9) n'est plus supporté. Le niveau d'API minimum cible dans le NDK est maintenant Android 4.0 (Android-9). Si votre APP_PLATFORM est inférieure à Android-14, Android-14 est utilisé à la place.

1

Votre question 'pourquoi' doit être adressée à l'équipe NDK. Vous pouvez leur demander au public mail list ou d'ouvrir une plainte au GitHub.

De toute façon, pour l'instant leur verdict est d'arrêter de supporter les anciens appareils. Attendez-vous à des prochaines versions de NDK pour réduire davantage les exigences de la plate-forme.

La question intéressante est ce que vous devriez faire à ce sujet. Si vous vous souciez de android-9 beaucoup plus que android-26, vous pouvez simplement continuer à utiliser une ancienne version de NDK. Cela ne va pas cesser de fonctionner. Il n'a pas de date d'expiration.

Normalement, Android conserve la rétrocompatibilité: si une application a été créée pour plate-forme X, elle fonctionnera (peut-être en mode de compatibilité) sur plateforme (X + n). D'autre part, les nouvelles versions de NDK ont d'importantes corrections de bogues, y compris des correctifs de sécurité. Les nouveaux périphériques (par exemple la plate-forme 'O') peuvent avoir des problèmes lors de l'exécution des fichiers binaires compilés avec l'ancien NDK. Et définitivement, l'ancien NDK ne vous donnera pas accès aux nouvelles fonctionnalités qui ne sont disponibles que sur les plates-formes avancées.

Par conséquent, il peut être utile de télécharger deux fichiers APK différents - un, avec SDK cible = 9, et un autre avec SDK min = 21 (vos chiffres peuvent varier). Play Store permet de gérer des fichiers APK distincts pour différentes plates-formes (et ABI). Vous devriez seulement faire attention à la politique de code de version, et ensuite vos utilisateurs recevront leurs mises à jour en temps opportun - ceux qui sont bloqués avec Eclair, et ceux qui passent à Nougat.