2 votes

JNI_OnLoad est-il normalement utilisé pour Android NDK ?

Je suis nouveau dans Android NDK, et je lisais ces conseils sur le site des développeurs Android. Il recommande d'utiliser JNI_OnLoad pour enregistrer vos méthodes natives, mais ne donne pas beaucoup de détails sur la façon de le faire.

Recherche Repo de l'échantillon NDK de Google sur GitHub n'a permis de trouver qu'une seule utilisation de JNI_OnLoad et il n'appelle pas RegisterNatives . Une recherche sur le web n'a pas non plus permis de trouver beaucoup d'informations sur la manière de procéder.

J'ai l'impression de manquer quelque chose. C'est censé être la façon correcte de procéder, selon Google, mais leurs propres exemples utilisent plutôt l'approche de nommage de la méthode "découverte".

Est-ce que c'est peut-être une ancienne façon de faire, qui ne se fait plus vraiment ?

3voto

Alex Cohn Points 13248

Enregistrer les autochtones est entièrement pris en charge sur Android, et la manière correcte de le faire est de JNI_OnLoad qui fonctionne également bien et qui est figurant en bonne place dans la documentation du NDK . Il y a quelques raisons d'utiliser Enregistrer les autochtones par rapport à la résolution automatique habituelle des méthodes natives par la correspondance des noms ( toujours utiliser javah pour obtenir des noms corrects ).

  1. Lorsque vous avez beaucoup de de méthodes natives, vous ne voudrez peut-être pas avoir une énorme table de fonctions exportées dans votre bibliothèque partagée.

  2. L'utilisation de la correspondance automatique facilite la rétro-ingénierie et le piratage de votre bibliothèque partagée.

  3. Vous pouvez élaborer une logique personnalisée pour faire correspondre les méthodes natives au moment de l'exécution.

  4. @CriticalNative doivent être enregistrées auprès de Enregistrer les autochtones au lieu de s'appuyer sur la liaison dynamique JNI.

Aucune de ces raisons ne s'applique aux échantillons et aux tutoriels d'introduction.

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