3 votes

Comment indiquer qu'une application Android prend en charge uniquement les processeurs ARM ?

J'ai une application Android qui ne fonctionne que sur les processeurs ARM. Cela est dû au fait que j'ai inclus un exécutable ARM dans l'APK. Cependant, après avoir cherché un peu partout, je n'ai pas réussi à trouver de moyen d'indiquer (dans un fichier manifeste ou quelque chose de similaire) que l'application ne fonctionnera pas sur d'autres architectures.

Normalement, les applications qui veulent inclure du code natif intègrent une bibliothèque partagée. Dans ce cas, l'application n'apparaît que dans le Play Store pour les utilisateurs ayant un CPU compatible. Cependant, l'utilisation d'une bibliothèque partagée n'est pas une option pour mon application.

Y a-t-il un endroit dans le fichier manifeste du projet ou ailleurs où je peux indiquer explicitement les architectures CPU prises en charge par l'application ?

2voto

CommonsWare Points 402670

Cependant, utiliser une bibliothèque partagée n'est pas une option pour mon application.

En théorie, cela devrait l'être. Créez une petite bibliothèque JNI compatible ne faisant rien avec le NDK, et compilez-la uniquement pour les architectures prises en charge par votre binaire intégré (par exemple, ARMv5 et ARMv7). Vous n'avez probablement même pas besoin d'utiliser la bibliothèque (bien que je recommande de mettre en place une classe Java qui y fait référence pour être sûr, du moins pendant les tests initiaux). Cela devrait suffire à déclencher les filtres du Play Store, même si vous n'exécutez jamais réellement le code.

En d'autres termes, utilisez les fonctionnalités du NDK uniquement pour le filtrage.

Personnellement, je réécrirais votre binaire en ligne de commande pour en faire une bibliothèque JNI compatible construite avec le NDK, pour des raisons de performances, mais ce n'est que mon avis.

0voto

AZone Points 2153

Cela pourrait être ce que vous recherchez

TextView tv_showArch_View = (TextView)findViewById(R.id.ShowCPUArch);
        String CPU_ABI = Build.CPU_ABI;

        tv_showArch_View.setText(CPU_ABI);

Il m'a renvoyé

ARMeabi pour l'émulateur fonctionnant sur un processeur ARM

et

X86 pour l'émulateur fonctionnant sur un processeur Intel

Pour plus d'informations détaillées, vous pouvez consulter la Documentation officielle de Google

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