2014-05-16 23 views
18

Android는 멋진 플랫폼입니다. 스칼라는 훌륭한 언어입니다. Intellij Idea는 훌륭한 IDE입니다.Android + Scala + Intellij 13

어떻게 모두 함께 작동 할 수 있습니까?

참고 : 자체 답변입니다. 그러나 더 많은 정보가 있다면 여기에서 공유하십시오.

+0

! 좋은 소식 (적어도 나를 위해). Android + Scala + AndroidStudio가 친구입니다. :) 자신의 기사에 대한 감사합니다. http://engineering.gutefrage.net/2015/01/15/building-an-android-app-using-scala/ –

답변

26

예 가능합니다.

필수 구성 요소 : Scala SDK가 설치되어 있어야합니다. 스칼라 Intellij 플러그인이 설치되었습니다. Android Intellij 플러그인이 사용 설정되었습니다.

SBT 및 타사 플러그인이 필요하지 않습니다. 걸레 없음. Gradle 지원은 아직 Scala 플러그인과 호환되지 않습니다. 그렇다면 알려주십시오.

  1. 새로운 프로젝트 만들기 : 인 IntelliJ에서 을> 새 프로젝트> 안드로이드 : 응용 프로그램 모듈> ... 이름 프로젝트 선택 API 레벨, 제안 등 만들기 MyActivity> 마침
  2. 만들기 스칼라 라이브러리 : 프로젝트 구조 열기> 플랫폼 설정> 전역 라이브러리> 새 전역 라이브러리> Java> Scala SDK/lib 찾아보기> Select scala-library.jar [옵션으로 문서 및 소스에 대한 링크 추가]
  3. 스칼라 컴파일러 라이브러리 생성 : 열기 프로젝트 구조> 새로운 글로벌 라이브러리> 자바> 찾아 스칼라 SDK/lib 디렉토리>를 선택 스칼라 - library.jar, 스칼라 - compiler.jar, 스칼라 - reflect.jar
  4. 추가 스칼라 투사 모듈 : 열기 프로젝트 구조 > 모듈> 확장> [추가]> 스칼라> 이전에 추가 된 "컴파일러 라이브러리"선택 (드롭 다운 목록에 나열되어야 함)
  5. 프로젝트에 스칼라 라이브러리 추가 모듈 : 프로젝트 구조> 모듈> [귀하의 모듈] 선택 : 종속성> + 추가> 라이브러리> "Scala-lib"선택 (이전에 글로벌 라이브러리에 추가됨)
  6. Proguard 추가 (최근에는 Proguard가 더 이상 테스트 할 필요가 없음을 알게되었습니다) : proguard-project.txt>Scala Proguard에 다음을 추가하십시오. 열기 프로젝트 구조가> 모듈> 확장 [기본 모듈]> 안드로이드 : Proguard와> (가진 기본 안드로이드 SDK 안드로이드-proguard.txt)
  7. 당신의 난독-project.txt 추가> "실행 Proguard와"를 사용하여 만들기 스칼라 활동 클래스 : (참고 : 이미 Java 버전의 MyActivity 템플릿은 /src/[your_package]/[MyActivity.class] 템플릿으로 만들었습니다.) 오른쪽 클릭/src/[your_package]> 새로 만들기> 스칼라 클래스> 이름 [MyActivity]> 확인. Java MyActivity.class의 모든 코드를 새로 만든 MyActivity.scala로 복사하십시오.> Intellij가 "Java에서 코드 변환"을 제안합니다.> 확인. 이제 모든 기능을 갖춘 MyActivity.scala를 사용할 수 있습니다. java MyActivity.class (안전한 삭제 옵션 없음)> AndroidManifest를 확인하십시오.xml은 여전히 ​​MyActivity에 연결됩니다.
  8. 즐기기 : 에뮬레이터 또는 기기로 실행합니다. 문제가 발생하면 (평소와 같이) 단계를 검토하십시오. 생각보다. 도움을 요청하십시오.
+0

조금 더 잘 대답하십시오 (하위 항목). 더 많은 텍스트의 벽과 같습니다. – ziggystar

+0

@ziggystar, 왜 당신의 컴퓨터에서 직접 구조체를 사용하지 않습니까? 한 번만 사용하면 다음 번에 다시 읽지 않아도됩니다. 기억하기 때문에 다시들을 수 있습니다. –

+1

Android Studio에서 2,3 및 4를 동일한 방식으로 수행 할 수 없습니다. 어떻게해야합니까? –

0

이 질문에 대한 의견이 있으시면 this discussion을 참조하십시오.

7

나는이 플러그인 gradle-android-scala-plugin 현재 설정과 successfuly 스칼라 2.11.7 + 안드로이드 스튜디오 + Gradle을을 사용

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() 
    } 
} 

응용 프로그램/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() 
} 

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 *; 
} 
+0

고맙습니다! – byrnedo

관련 문제