【发布时间】:2012-09-06 20:40:22
【问题描述】:
我正在尝试让一个 hello world android 应用程序与 scala 和 intellij 一起工作 尝试过相同壮举的人必须熟悉以下步骤。当我使用 sbt 时,问题发生在最后
请注意我使用的每个工具的版本。 对于初学者,我使用的是 java 版本 1.7.0_07
-下载并设置android sdk。我已经下载了从 1.5 (API 3) 到 4.1 (API 16) 的所有版本。我不会对此进行进一步的详细介绍。已经有很多教程了。
我们将需要环境变量中的 android home 路径。所以让我们为当前用户设置一个持久化环境变量
gedit ~/.pam_environment
现在追加:ANDROID_HOME= 例如
ANDROID_HOME=/home/pligor/android-sdks
现在让我们使用 sbt 工具。 我们宁愿手动安装 sbt。 在链接中找到“Unix”部分: https://github.com/harrah/xsbt/wiki/Getting-Started-Setup 并下载 sbt-launch.jar 并将其放入 ~/bin 目前这是版本 0.12.0 然后创建一个sbt文件:
gedit ~/bin/sbt
在里面写下这一行:
java -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -jar `dirname $0`/sbt-launch.jar "$@"
并使脚本可执行:
chmod u+x ~/bin/sbt
现在你需要为 intellij 安装一个 sbt 插件。 sbt-idea 1.1.0 版本:
gedit ~/.sbt/plugins/build.sbt
在行内添加追加(记住每个 .sbt 文件用一个额外的空行分隔每个语句):
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.1.0")
对于 github 模板,您需要 giter8 工具。所以执行:
卷曲https://raw.github.com/n8han/conscript/master/setup.sh |嘘
然后执行:
cs n8han/giter8
现在我使用 g8 从 jberkel 获取一个 android app 模板:
g8 jberkel/android-app
有一些问题需要您设置。目前我将所有内容都保留为默认值。这意味着我使用 scala 版本 2.9.1 和 Android 2.3.3 (API 10) 和 scalatest_version 1.8.RC1。 我不习惯使用 proguard,因为我之前没有使用过它,所以我将 useProguard 设置为 false。
在运行 sbt 之前: android-plugin目前兼容0.11.3版本的sbt我们需要做一个调整。所以在新的android应用程序的文件夹中执行: gedit 项目/build.properties 并插入这一行: sbt.version=0.11.3
在同一个文件夹中执行: sbt 'gen-idea no-classifiers' 编译
然后进入sbt交互模式控制台: sbt
在控制台内执行: 安卓:包调试
我相信这些警告是问题的根源: 故障处理: 坏类文件魔术(cafebabe)或版本(0033.0000) ...同时解析 my/android/project/R$id.class
现在你可以尝试启动一个 android 模拟器: android:emulator-start # 用于获取 avds 列表 例如 android:emulator-start android2_3_3
在模拟器完全启动后,像这样执行 android 应用程序: 安卓:启动模拟器
在所有这些之后,应用程序将崩溃!
【问题讨论】:
-
这是我从 logcat 得到的: FATAL EXCEPTION: main 443 AndroidRuntime E java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{my.android.project/ my.android.project.MainActivity} : java.lang.Cl assNotFoundException: my.android.project.MainA 活动在加载程序dalvik.system.PathClassLoader [/data/app/my.android.project-1.apk]
标签: android scala ubuntu intellij-idea sbt