La façon dont vous le faire est de commencer par obtenir un compilateur Haskell qui peut cibler C avec l'android NDK qui est livré avec un port de GCC pour les architectures ARM. JHC peut carrément le faire avec une très faible inf fichier de style qui décrit la plate-forme (taille de mot, compilateur c, etc) je l'ai fait avec la Wii homebrew dev kit et il était assez facile. Cependant jhc a encore quelques problèmes de stabilité avec le code complexe comme l'utilisation d'une monade transformateur pile avec IO, mais jhc a été l'amélioration de beaucoup au cours des 6 derniers mois. Il y a une seule personne à travailler sur JHC j'ai juste souhaité que plus de gens pourraient l'aider.
L'autre option est de construire un "non" port de GHC ciblant le ndk gcc, c'est beaucoup plus le processus parce que GHC n'est pas un vrai cross-compilateur pour le moment et vous avez besoin de comprendre le système de compilation de ce que les pièces que vous avez besoin de changer. Une autre option est NHC qui peuvent cross-compiler en C, comme GHC vous avez besoin pour construire nhc, le ciblage d'un compilateur C, NHC n'a pas beaucoup de Haskell des extensions comme GHC.
Une fois que vous avez compilateur Haskell ciblage NDK GCC, vous aurez besoin d'écrire des fixations, soit le android NDK JNI colle le code-cadre (ajouté depuis android 2.3) ou vous devez écrire JNI colle le code entre Java-C-Haskell, la première option est la solution facile, et si je me souviens bien, en fait, pourrait être compatible avec les versions antérieures d'Android 2.3 ci-dessous.
Une fois que vous avez cela, vous devez générer du code Haskell en tant que bibliothèque partagée ou statique de la bibliothèque qui obtient dans le cadre de la NDK java colle le code (qui est une bibliothèque partagée). Pour autant que je suis conscient que vous ne pouvez pas officiellement exécuter des exécutables natifs sur android. Vous pourriez probablement faire avec un téléphone enracinée, donc je suppose que cela signifie que vous ne pouvez pas distribuer des exécutables natifs sur l'app store, même lorsque le NDK gcc port peut générer des exécutables natifs très bien. Ce aussi probablement tue l'option pour l'utilisation de LLVM, sauf si vous pouvez obtenir le NDK JNI de travail avec LLVM.
L'obstacle le plus important n'est pas tant d'obtenir un compilateur Haskell pour android (qui est toujours un grand obstacle) le plus gros problème est que certains on a besoin d'écrire de liaison Api pour NDK bibliothèques qui est une énorme tâche et la situation est pire si vous avez besoin d'écrire android code de l'INTERFACE utilisateur, car il n'y a pas NDK Api pour cette partie du SDK android. Si vous voulez faire l'INTERFACE utilisateur android code Haskell quelqu'un va devoir écrire Haskell pour les liaisons de Java via JNI/C. Sauf s'il y a une plus grande automatisation du processus de rédaction de liaison des bibliothèques (je sais il y en a, ils sont tout simplement pas automatisé assez pour moi) alors les chances de quelqu'un de le faire sont très faibles.
L01man: un tutoriel sur la façon de faire cela? Pour l'
première partie, je comprends que je dois télécharger des JHC. Que dois-je
écrire dans le fichier inf et comment l'utiliser?
Veuillez noter avant de me répondre à cette question, je n'ai pas utilisé jhc pour très peu de temps depuis l'origine, j'avais écrit ceci, et les versions plus récentes ont été publiées depuis donc je ne sais pas comment la stabilité de l'jhc est actuellement quand il s'agit de la génération de code plus complexe Haskell programmes. C'est un avertissement à quiconque avant d'envisager de faire un grand Haskell programme avec JHC, vous devriez faire quelques petits tests avant de vous rendre en plein sur.
jhc dispose d'un manuel de http://repetae.net/computer/jhc/manual.html et une section sur la mise en place de cross-compilation et .fichier ini avec les options: http://repetae.net/computer/jhc/manual.html#crosscompilation.
L01man: La deuxième partie est une alternative à la première. Je ne sais pas comment faire ce que vous avez dit dans le
la troisième.
Avant de commencer vous devez avoir quelques connaissances en C et être à l'aise avec l'utilisation de la Haskell étrangères interface de la fonction (FFI) et des outils tels que hs2c. Vous devez également être familiarisé avec l'utilisation de l'Android NDK et de la construction .apk avec les bibliothèques partagées. Vous aurez besoin de connaître ces à l'interface entre le C-Haskell, Java/C-Haskell et de développer Haskell programmes pour Android que vous pouvez officiellement distribuer/vendre sur le marché.
L01man: je comprends que son but est de créer une liaison pour le
L'API Android. Mais... la 4ème partie dit que nous ne pouvons pas faire .apk avec
Haskell?
.apk est juste un package d'application du format de fichier et est construit avec les outils fournis avec le SDK Android (pas NDK), cela a très peu à faire la construction de la binaires de lui-même. Android un colis peut contenir natif bibliothèques partagées, ce que votre Haskell programme et de la maternelle, partagé, les bibliothèques statiques sont générés via l'Android NDK.