Android 용 스칼라 프로그래밍


258

I은 튜토리얼 따랐다 스칼라와 안드로이드스칼라 2.7.3 최종합니다. 결과적으로 생성되는 Android 앱은 작동하지만 가장 기본적인 애플리케이션조차 컴파일하는 데 몇 분 (!)이 걸리고 900kb 압축이 필요 합니다. 이는 모바일 애플리케이션의 쇼 스토퍼입니다. 또한 IDE는 때때로 메모리가 부족합니다. 나는 dex같은 큰 라이브러리를 위해 만들어진 것이 아니라고 가정 합니다 scala-library.

  • 그래서 내 질문은 : 누군가 실제로 이것을 했습니까?이 치료법이 있습니까?

답변:


128

스칼라에서 기본적인 안드로이드 응용 프로그램을 작성했습니다. Java 프로그래머가 아니기 때문에 "트리 쉐이크"를 사용하는 것이 좋습니다. 친구에게 이것이 jar 파일 에서 불필요한 모든 라이브러리를 제거한다고 설명했습니다 .

나는 그것을 문서화하지 않았지만 다른 누군가가 이미 가지고 있음을 발견했다.

http://chneukirchen.org/blog/archive/2009/04/programming-for-android-with-scala.html

Proguard가 유일한 솔루션은 아니며 작업 흐름에 적합하거나 환경에 더 적합한 것을 찾을 수 있습니다.

또한 Google은 JACK을 구현했으며 빌드 및 메모리 시간을 상당히 단축시킵니다. https://source.android.com/source/jack.html


3
감사합니다! 나는 그것을 시도해야 할 것이다. 스칼라와 안드로이드 플러그인을 사용하여 Eclipse와 함께 사용할 수 있는지 궁금합니다.
Lemmy

36
Lemmy-이 답변을 수락하지 않은 이유가 있습니까? 아마도 더 나은 해결책을 찾았습니까?
Bostone

3
내 경험상 트리 쉐이크는 사소하지 않은 대부분의 스칼라 코드에 충분하지 않습니다. 그것은 충분히 공격적이지 않습니다.
James Moore

45

이제 Gradle 용 Android 플러그인을 사용하여 Scala에서 Android 애플리케이션을 작성할 수 있습니다. 그것은 APK 파일에서 지방을 다듬기 위해 ProGuard 도구를 통합하므로 귀하의 요구를 충족시키는 것 같습니다.

https://github.com/jvoegele/gradle-android-plugin/wiki


잘 작동합니다! 내가 시도한 솔루션 중 어느 것도 즉시 사용할 수는 없지만 Gradle 플러그인은 유용한 피드백을 제공하여 잘못 된 것을 쉽게 수정할 수 있습니다.
Mendelt

Jason, 아직도이 일을하고 있습니까? 마지막 커밋은 9 개월 전에 이루어졌으며 그 이후로 등급이 올라갔습니다.
피터 아지 타이

Peter, Gradle이 이제 Android 용 기본 빌드 시스템이라는 사실 때문에 개발이 중단되었습니다.
Jason Voegele



15

Eclipse 3.7, Scala 2.10 및 플러그인 AndroidProguardScala v50으로이 자세한 솔루션을 확인했습니다.

https://stackoverflow.com/a/11084146/1287856

모든 것이 잘 작동합니다. 확장 된 기본 활동 클래스가있는 간단한 테스트 애플리케이션은 38Kb 만 걸립니다. 라이브러리 프로젝트가 지원됩니다. 프로젝트를 내보낼 때 Proguard가 활성화됩니다.


3
대단해 장치에 배포 할 때 (비교 가능한 Java Android 프로젝트 배포와 비교하여)이 솔루션으로 빌드 시간은 어떻습니까?
evilcandybag

1
장치에 배포 할 때 빌드 시간은 약 10 초입니다. 언젠가 더 빨라지기를 바랍니다.
Mikaël Mayer

6
새로운 좋은 캐시 구현으로 인해 최신 안드로이드 SDK 및 플러그인으로 약 1 초가 걸립니다.
Mikaël Mayer

7

Scala 용 Android 앱 개발은 지속적으로 발전하고 있습니다. 현재 수행하는 가장 좋은 방법은 android-sdk-plugin 과 함께 SBT에 나타나고 유지 관리되며 Scala / Android 프로젝트에서 잘 작동합니다. 이미 언급 된 스칼 로이드와 함께이 플러그인을 사용하는 방법을 보여주는 다소 최근 예제 도 찾을있습니다 .

이 질문은 스택 오버플로에 대한 답변이 오래된 질문 의 일반적인 예입니다 . 이 답변은 어느 시점에서 구식이 될 것입니다.

*이 답변 스레드에 언급 된 다른 SBT 기반 프로젝트는 작성 시점에서 지난 6 개월 동안 코드를 작성하지 않은 것으로 보입니다. 최신 버전의 Scala 및 SBT와 호환성 문제가있을 수 있습니다.


6

maven을 사용하는 경우 android-scala-test 를 시작 템플릿으로 사용하십시오. 즉시 사용할 수 있습니다.

Scaloid 는 Scala로 작성된 Android API 래퍼로, Android 프로그램을 Scala 스타일로 작성하는 데 도움이됩니다.


4

SBT없이 Android에서 Scala를 사용할 수 있으며 Gradle에 의해 외부에서 빌드되어 Android 응용 프로그램을 만들 수 있습니다. https://github.com/yareally/android-scala-intellij-no-sbt-plugin

Gradle은 SBT보다 Android 용 기본 빌드 도구입니다.

IntelliJ IDEA 워크 벤치의 발전을위한 Scala 클라이언트 및 서버 측 솔루션 개념과 gradle 빌드 도구의 좋은 예가 있습니다.

핵심 클래스가 클라이언트와 서버에 공통이라는 큰 발전.

https://github.com/ghik/akkdroid

IDEA 및 android-plugin에 대한 유용한 학습서 : http://fxthomas.github.io/android-plugin/


3

Android에서 Scala의 가장 큰 문제는 컴파일 시간입니다.

8GB의 듀얼 쿼드 코어 (8-CPU) E5450 Xeon에서 IDEA13 / Scala 플러그인을 사용한 Proguard 클래스 스트리핑 컴파일로 인해 2 분 이상 걸릴 수 있습니다.

컴파일 시간이 너무 실망 스럽기 때문에 게으른 Scala Android 프로젝트를 완료 한 후 Java로 간단히 돌아갔습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.