10
votes

100% d'application native C sur Android?

Y a-t-il de toute façon je pourrais écrire 100% Code C natif pour Android? Je sais qu'il y a des moyens d'écrire du code C à l'intérieur du code Java, mais je ne connais aucun Java et je déteste Java quand même.

Y a-t-il de toute façon je pourrais écrire du code C pur qui fonctionnera sous Android?


10 commentaires

Vous ne connaissez pas de Java et pourtant vous détestez Java? Vous faites mal mon cerveau.


"Je ne sais pas de Java et je déteste Java quand même" ... Ne laissez pas le favoritisme de langue vous retenir en tant que développeur. Apprenez les outils de votre métier.


Il n'ya aucun moyen d'avoir une application à 0% Java et qui fonctionne à Android. Les applications Android fonctionnent dans une machine virtuelle Java.


Si vous détestez Java de toute façon, il s'ensuit que vous devriez détester Android de toute façon, non?


Sérieusement, vous détestez Java? C'est comme un charpentier disant, j'aime vraiment mon tour, mais f Ces carrés f-inguies là-bas. Et marteaux ... ne me prenez même pas à commencer sur les marteaux ... Java, C ++ sont presque la même langue syntaxiquement


Vous ignorez toutes une chose, vous ne savez pas si l'OP parle en C ou en C ++, dans le premier cas, il pourrait dire qu'il n'aime pas programmer à l'aide de OO. Dans le second cas, je n'aime pas non plus l'approche de l'Android SDK, d'avoir à écrire des tonnes de fichiers XML, il favorise la mentalité que la programmation est beaucoup plus musculaire que la cervelle, et il tombe donc dans les appels de Joel Java écoles (ou programmeurs paresseux). Sans oublier que l'on ne peut que programmer uniquement en utilisant des refactorings presque uniquement sans design du tout.


@ Coyote21 hein? tonnes de fichiers XML - Vous voulez dire des données, décrivant la hiérarchie de vue, qui peut également être effectuée en code si vous préférez? Il n'y a qu'un seul fichier XML que vous devez créer, qui est le manifeste. Ou parlez-vous de quelque chose d'autre? Layout XML n'a rien à voir avec les muscles vs cerveau, mais plutôt le concept entièrement approprié de séparer les données de présentation de la logique.


Je déteste aussi Java, tout en aimant c avec toute mon âme. +1 pour cette question, je cherchais la même chose


Juste pour clarifier aux autres, pourquoi je déteste Java: c'est sacrément lent et vous ne pouvez pas écrire l'assemblée en ligne avec elle


Java sur Android court 4 fois plus lent que C. Java suce. Source: AndroidAutHority.com/java-vs-c-app-Performance -689081


4 Réponses :


2
votes

Peut-être plus de problèmes que ce qu'il vaut la peine, vous pouvez éventuellement écrire votre logique en Code C et importer que Java à l'aide d'extérieur ou externe (j'oublie actuellement), puis faites l'interface graphique en Java. Il ne sert vraiment pas à utiliser directement C dans Android, à moins que vous ne souhaitiez vraiment optimiser votre logique. La plupart des appels que vous pouvez faire sont emballés de toute façon, vous devez donc faire appel à ces appels pour accéder à certaines choses sur un appareil Android. Longue histoire courte: pas une bonne idée à moins d'avoir besoin de logique plus rapide.


1 commentaires

Je peux penser à de nombreuses raisons d'utiliser une langue autre que Java. a) Bases de code existantes B) Base de connaissances de l'équipe c) Réutilisation du code sur plusieurs plates-formes (iOS, etc.). Ces types de réponses sont ce qui envoie les ameutreurs sur des poursuites d'oie sauvage ...



10
votes

Il y a, à partir de Android 2.3: NativeActivity . Mais vous n'obtenez pas accès à aucune des méditations des bibliothèques Java d'Android; Vous êtes seul dans l'ouest sauvage. Ceci est vraiment destiné aux personnes qui écrivent des jeux de haute performance.


1 commentaires

Avec NATIVEACECTIVITÉ, Votre code pourrait être "pur" c, mais il fonctionne toujours dans un processus qui inclut la machine virtuelle Dalvik, et votre code "pur" a été lancé par un appel JNI de Java. .. viennent de surmonter votre "haine" ou de votre java ou arrêtez de développer pour Android ...



2
votes

Vous pouvez écrire la majeure partie de l'application en C autour d'une natifactivité. Cependant, certaines fonctionnalités Android ne peuvent être utilisées qu'à partir de Java. Vous devez donc utiliser JNI au lieu de pure natif. Voir l'officiel Vue d'ensemble .


1 commentaires

Lors de l'utilisation de NativeActivity, cela signifie-t-il que l'application C ne peut pas appeler des méthodes Java?



2
votes

Oui, il est possible d'écrire des activités totalement indigènes. Vous pouvez consulter le ACTIVITÉ NATIF-ACTIVITÉ Exemple d'application.

Je ne recommanderais pas ce chemin, comme dans mon expérience, les applications lourdes au code NDK sont très difficiles à déboguer. Je voudrais évaluer l'expérience Android Native Débogage comme manquant de défaut.

edit - une mise en garde, c'est que vous allez toujours faire du Java - juste à travers le JNI.


1 commentaires

Très vrai. Je convertissez une application en C et cela a été assez amusant lol. Pas pour le très bon cœur qui est sûr.