Android + Scala + Intellij 13

Mar*_*ell 18 android scala intellij-idea

Android是很棒的平台.Scala是很棒的语言.Intellij Idea是一款出色的IDE.

他们如何一起工作?

注意:这是一个自我回答.但如果您有更多信息,请在此处分享.

Mar*_*ell 26

是的他们可以.

先决条件: 已安装Scala SDK.已安装Scala Intellij插件.已启用Android Intellij插件.

不需要SBT和第三方插件.没有Gradle.Gradle支持尚未与Scala插件兼容.如果是,请通知我.

  1. 创建新项目: 在Intellij>新项目> Android:应用程序模块> ...名称项目,选择API级别,按建议创建MyActivity>完成
  2. 创建Scala库: 打开项目结构>平台设置>全局库>新建全局库> Java>浏览Scala SDK/lib>选择scala-library.jar [可选择添加指向文档和源的链接]
  3. 创建Scala编译器库: 打开项目结构>新建全局库> Java>浏览Scala SDK/lib>选择scala-library.jar,scala-compiler.jar,scala-reflect.jar
  4. 将Scala添加到项目模块: 打开项目结构>模块>展开[您的主模块]> +添加> Scala>选择之前添加的"编译器库"(应列在下拉列表中)
  5. 将Scala库添加到项目模块: 打开项目结构>模块>选择[您的模块]:依赖关系> +添加>库>选择"Scala-lib"(之前添加到全局库)
  6. 添加proguard (最近发现不再需要Proguard进行测试): 将以下内容添加到proguard-project.txt> Scala Proguard中. 打开项目结构>模块>展开[您的主模块]> Android:Proguard>启用"Run Proguard">添加您的proguard-project.txt(具有默认的Android SDK android-proguard.txt)
  7. 创建Scala Activity类:( 注意:您已经拥有由模板创建的MyActivity的Java版本:/src/ [your_package]/[MyActivity.class]). 右键单击/ src/[your_package]>新建> Scala类>将其命名为[MyActivity]>确定. 所有代码从java MyActivity.class 复制到新创建的MyActivity.scala> Intellij建议"从Java转换代码">确定. 现在您拥有功能齐全的MyActivity.scala. 删除 java MyActivity.class(没有安全删除选项)>检查仍然链接到MyActivity的AndroidManifest.xml.
  8. 享受: 在模拟器或设备中运行您的应用程序. 如果出现问题(像往常一样),请检查您的步骤.想想自己.比问帮忙.


adr*_*ray 7

我成功使用Scala 2.11.7 + Android Studio + Gradle与此插件gradle-android-scala-plugin和当前配置:

的build.gradle

buildscript {
    repositories {
        jcenter()
        mavenCentral()
        maven {
            url "http://saturday06.github.io/gradle-android-scala-plugin/repository/snapshot"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.1'
        classpath 'jp.leafytree.gradle:gradle-android-scala-plugin:1.3.2'
        classpath "org.scala-lang:scala-library:2.11.7"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)

应用程序/的build.gradle

apply plugin: 'com.android.application'
apply plugin: "jp.leafytree.android-scala"


android {
    compileSdkVersion 22
    buildToolsVersion "19.1.0"
    defaultConfig {
        applicationId "com.example.adray.myapplication"
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }

    lintOptions {
        abortOnError false
    }

    sourceSets {
        main {
            scala {
                srcDir "src/main/scala" // default: "src/main/scala"
            }
        }

        androidTest {
            scala {
                srcDir "src/androidTest/scala" // default: "src/androidTest/scala"
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.github.satyan:sugar:1.3'
    compile 'org.scala-lang:scala-library:2.11.7'
    compile 'com.google.android.gms:play-services:7.5.0'
    compile 'com.android.support:appcompat-v7:22.2.0'
}

repositories {
    mavenCentral()
    jcenter()
}
Run Code Online (Sandbox Code Playgroud)

proguard-rules.pro

-dontoptimize
-dontobfuscate
-dontpreverify
-dontwarn scala.**
-dontwarn android.support.v4.app.**
-dontwarn android.support.v4.view.**
-dontwarn android.support.v4.widget.**
-ignorewarnings
# temporary workaround; see Scala issue SI-5397
-keep class scala.collection.SeqLike {
    public protected *;
}
Run Code Online (Sandbox Code Playgroud)