【问题标题】:IntelliJ Idea 12 + Android + Scala nowadays如今的 IntelliJ Idea 12 + Android + Scala
【发布时间】:2013-05-25 14:44:03
【问题描述】:

按照我的建议,我浏览了几篇描述如何使 IntelliJ Idea 与 Android 和 Scala 协同工作的文章,但事实证明它们都是 1 或 2 年前写的。从那时起,很可能发生了一些变化,现在还有其他解决方案可以实现这一目标。具体来说,有一个新的解决方案https://github.com/yareally/android-scala-intellij-no-sbt-plugin,不知道效果好不好。

我已经安装和设置了 IntelliJ Idea 12、Android SDK、Scala、SBT 和所有其他东西。剩下的唯一事情是设置 IntelliJ Idea 12 以使其与 Scala 而不是 Java 一起用于创建 Android 应用程序。

请不要关闭问题。我看到之前的问题与我的类似,但正如我所说,它们已经过时了。

问题是,现在(2013 年 5 月)我该怎么做?

附:我尝试了 Android Development Studio,但由于许多错误,我什至无法启动它。

【问题讨论】:

    标签: android scala ubuntu ide intellij-idea


    【解决方案1】:

    更新:您可以阅读我写的关于即将推出的新版 SBT-Android (0.7) 的 tutorial。您的大部分问题都应该在那里解决。如果不是,那就有问题了。


    更新 2: 为了公平起见,还有一项很棒的工作正在进行中:android-sdk-plugin@pfn 在 GitHub 上。

    关于 ProGuard 和构建时间:

    • 我本人是preloading large libraries,在我的设备上使用sbt-android。这完全消除了 ProGuard,但需要 root。

    • android-sdk-plugin 的最新版本拥有一个新的 ProGuard 缓存(与 AndroidProguardScala 相同),它非常贴心,并且在开发过程中的大多数情况下确实消除了 ProGuard。


    我已经为SBT-Android 贡献了几个月的时间,所以我比其他解决方案更了解它。

    截至目前,该插件正在迅速发展,其中:

    • 即将推出完整的 IntelliJ 支持(感谢 SBTIdea(事实上,它已经工作了,我只需要发送拉取请求)
    • 在模拟器或根设备上自动预加载 Scala(只需运行 android:preload-{device, emulator},开发不再需要 Proguard!)
    • 应该以最小的努力支持开箱即用的简单 Gradle 项目(目录结构非常相似)
    • 配置要容易得多(只需添加插件和a project file 就可以了!)

    当前版本没有大部分这些细节,但它们会在接下来的几周内推出。当然很快就会有一些文档,包括示例和我会想到的所有内容。

    顺便说一句,我鼓励您加入 Scala on Android Google 群组并分享您的想法。如果你喜欢 IRC,Freenode 上还有一个#sbt-android 频道。

    【讨论】:

    • 他只是在使用 Proguard,这是 SBT-Android 长期以来一直在做的事情。所以是的,在某种程度上我知道他在做什么;)
    • 好吧,使用 SBT-Android,您可以获得依赖项管理、快速命令行构建、预加载(这可以让您跳过不想错过的 Proguard,从而节省大量时间!)和一堆其他的东西。他的解决方案没有任何作用,所以我个人不会推荐它......
    • 查看我的更新,它应该让你走上正轨。如果你愿意等几个星期,我计划了一个完整的教程,用很好的例子和截图涵盖所有内容;)
    • 当然,只要在你的命令前使用~ (tilda),比如~compile ;)
    【解决方案2】:

    只是想插话。我使用了https://github.com/yareally/android-scala-intellij-no-sbt-plugin,虽然我发现说明很模糊,在此之前从未使用过 IntelliJ。

    您现在可能已经解决了所有问题并且对 SBT 感到满意,但出于我的目的,我只是想在 Android 上测试 Scala,而不需要所有额外的花里胡哨。所以,为了让 no-sbt-plugin 工作正常,我必须做一些小事情:

    我最终将 scala-compiler.jar(连同 scala-library.jar 和 scala-reflect.jar)作为全局库包含在内:

    这样,编译器可以访问库和反射代码,否则我会出错。如果您不包含该库,IDE 会抱怨编译器需要关联的库,如果您不包含反射,它会在编译时吐出一堆错误,无法找到反射类定义。

    我还必须将 scala-library.jar 作为模块依赖项包含在内(这也有将其包含在“库”部分下的副作用):

    在做这一切之前,我安装了 Scala 插件,创建了一个 Android 项目,并简单地添加了一个 Scala 方面(忽略内存设置,我在胡闹):

    最后,我必须通过在 proguard txt 文件中添加一些“-dontwarn”行来解决一些剩余的编译错误。很简单。

    像魅力一样工作。还没有做任何实质性的事情,但我期待在我的下一个 Android 项目中使用 Scala。

    【讨论】:

    • 我认为这可以通过右键单击没有 Scala facet 的项目,选择 Add Framework Support...,然后选择 Scala 来更简单地完成。
    【解决方案3】:

    我编写了 Scaloid 库,它使 Android 开发更简洁地使用 Scala。

    为了快速入门,我为 Scala+Android 编写了一个 hello-world maven 项目。

    我使用 Intellij 作为主 IDE,它以魅力的方式导入项目。

    【讨论】:

    • 我希望它使用 sbt,而不是 maven。
    • 似乎还有一个名为 hello-scaloid-sbt 的 repo:github.com/pocorall/hello-scaloid-sbt
    • @Pascal,它和 Android 有什么关系?
    • @Alex,正如存储库的描述所说,“[它] 是一个模板项目,可以作为新 Scalaid 项目的起点。” scaloid 可用于 Android 开发。
    • @MariusKavansky,它支持使用 SBT 作为您的构建工具。我可以简单地运行 sbt "~ run" 并从任何 IDE 进行开发。
    【解决方案4】:

    大约一个月前我已经完成了这个工作,并且我设法使用 Gradle 让它工作得非常好。

    结果如下:https://github.com/ghik/akkdroid

    这是一个使用 Scala 和 Akka 的简单客户端-服务器项目,在 Android 上具有客户端,使用 IntelliJ IDEA 开发。我知道客户端-服务器与 Akka 并没有真正的意义,但这只是一个简单的大学项目,以证明这些技术可以协同工作。

    但请注意,此项目中的 gradle 脚本仅用于生成 IDEA 项目,它必须进一步扩展才能执行正确的 Android 应用程序构建。

    【讨论】:

    • @Alex 没试过,可能没有。
    • @Alex Android Studio 对我来说非常好用。 :-)
    【解决方案5】:

    我看了这个帖子好几个月了,终于有时间做真正的测试了。

    将 IntelliJ 13 与 SBT 0.13 和 Scala 2.10.3 结合使用。

    1. SBT-Android 已经有几个月没有更新了。我发现说明已经过时了,我没有设法创建一个工作项目。

    2. android-sdk-plugin 有效。只需按照简单的步骤,我就可以在手机上运行“hello world”。但是将 SBT 项目导入 IntelliJ 将无法正常工作,需要手动进行一些项目修改。

    3. 我也尝试过先创建一个 Android 项目,然后添加 Scala 框架,但没有达到我的预期。

    【讨论】:

    • Android Studio 怎么样?
    猜你喜欢
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多