如何在Android上运行Frege程序?

Pet*_*lák 27 android haskell dalvik frege

我对函数式语言的Android编程感兴趣,最好是接近Haskell.弗雷格似乎是一个不错的选择.我发现有人已经做过这样的概念验证应用程序,但我找不到它的来源或类似的东西.

所以我的问题是,如何在Android上运行Frege程序,它有多难以及最终的障碍是什么?

Ing*_*ngo 6

我看到的主要障碍是,目前无法将frege源编译为实现某个接口或扩展另一个类的java类.

相反,从frege模块生成的java类只是静态方法和您定义的其他东西的命名空间.

因此,要制作一个简单的Android项目,从frege调用java是不够的,这很容易,但也可以从java调用frege.换句话说,你需要字面意义上的完整*inter*可操作性.

当然,这是可能的,但必须说代码生成并不是为了方便java使用而设计的.

我还没有完成Android项目,因此我不确定需要多少胶水代码.

最后一个警告:Gabriel Riba之前的工作是使用早期版本的编译器完成的.甚至还有支持JDK6的frege发行版的链接 - 请不要使用它,它与更新的版本不兼容.

如果你愿意接受它,你将通过上面提到的谷歌小组获得所有可能的支持.如果有人制作并记录了一些"规范"的方法来实现这一点,那就太棒了.


Jes*_*eke 3

我对frege不太熟悉,也没有尝试过在Android上使用scala或其他JVM语言。

话虽这么说,如果我要尝试类似的事情,我可能会采取以下步骤来尝试找出如何让它发挥作用。

  1. 在frege中构建一个基于简单命令行的HelloWorld类型应用程序,可以使用例如java -jar HelloWorld.jar HelloWorld运行

  2. 在 HelloWorld.jar 上运行 dx,然后尝试使用 dalvikvm 从 adb shell 在 Android 设备上运行该示例。即 dalvikvm -cp blah.dex HelloWorld

  3. 了解如何在 frege 中引用/使用 Android sdk 提供的 android.jar 中的类

  4. 在frege中构建一个简单的概念验证Activity类,并从中手动构建一个classes.dex文件

  5. 在 Java 中构建类似的概念验证应用程序,并使用现有的 Android 工具构建 apk

  6. 替换apk中的classes.dex,重新签名apk,看看是否有效

  7. 如果你完成了这么多工作,那么从那里开始,你可以为 frege 开发一个更好的构建故事,使用 aapt 编译资源并最终“从头开始”构建一个完整的 apk。