2014-05-16 9 views
18

Android to świetna platforma. Scala to świetny język. Intellij Idea to świetny IDE.Android + Scala + Intellij 13

Jak wszyscy mogą ze sobą współpracować?

Uwaga: To własna odpowiedź. Ale jeśli masz więcej informacji, udostępnij to tutaj.

+0

! Świetne wiadomości (przynajmniej dla mnie). Android + Scala + AndroidStudio są teraz przyjaciółmi :) Dzięki temu facetowi za jego artykuł http://engineering.gutefrage.net/2015/01/15/building-an-android-app-using-scala/ –

Odpowiedz

26

Tak, mogą.

Wymagania wstępne: Scala SDK zainstalowany. Zainstalowana wtyczka Scala Intellij. Włączone wtyczki Intelli Androida.

Brak wtyczek SBT i innych firm. Bez Gradle. Wsparcie dla Gradle nie jest jeszcze kompatybilne z wtyczką Scala. Powiadom mnie, jeśli tak.

  1. Utwórz nowy projekt: W IntelliJ> Nowy projekt> Android: moduł Aplikacja> ... Nazwa projektu, wybierz poziom API Tworzenie MyActivity jak sugeruje> Zakończ
  2. Tworzenie Scala Biblioteka: Otwórz strukturę projektu> Ustawienia platformy> Biblioteki globalne> Nowa biblioteka globalna> Java> Przeglądaj Scala SDK/lib> Wybierz plik scala-library.jar [Opcjonalnie dodaj łącze do dokumentów i źródeł]
  3. Utwórz bibliotekę kompilatorów Scala:StrukturaOtwarty Projekt> Nowy Globalny Biblioteka> Jawa> Przeglądaj Scala SDK/lib> Wybierz scala-library.jar, scala-compiler.jar, scala-reflect.jar
  4. Dodaj Scala do projektu modułu: Struktura Otwórz projekt > Moduły> Rozwiń [Twój główny moduł]> + Dodaj> Scala> Wybierz "Bibliotekę kompilacji" poprzednio dodaną (powinna być wymieniona na liście rozwijanej)
  5. Dodaj bibliotekę Scala do projektu Moduł: Struktura projektu otwartego> Moduły> Wybierz [Twój moduł]: Zależności> + Dodaj> Biblioteka> Wybierz "Scala-lib" (wcześniej dodane do bibliotek Global)
  6. Dodaj proguard (ostatnio odkryto, że Proguard nie jest już wymagany do testowania).: Dodaj następujące elementy do swojego proguard-project.txt>Scala Proguard. Otwarte Struktura Project> Moduły> Expand [Twój główny moduł]> Android: Proguard> Włącz "Run PROGUARD"> Dodaj PROGUARD-project.txt (o domyślnym Android SDK Android proguard.txt)
  7. Tworzenie Scala Activity class: (Uwaga: Masz już wersję Java MyActivity utworzoną przez szablon: /src/[twoj_pakiet]]/[MyActivity.class]). Po prawej kliknij/src/[twój_pakiet]> Nowy> Klasa Scala> Nazwij ją [MyActivity]> Ok. Skopiuj cały kod z java MyActivity.class do nowo utworzonego pliku MyActivity.scala> Intellij sugeruje "Konwertuj kod z Java"> Ok. Teraz masz w pełni funkcjonalną MyActivity.scala. Usuń java MyActivity.class (bez opcji bezpiecznego usuwania)> Sprawdź AndroidManifest.xml nadal jest połączony z MyActivity.
  8. Ciesz się: Uruchom aplikację w emulatorze lub urządzeniu. Jeśli coś pójdzie nie tak (jak zwykle), proszę przejrzeć swoje kroki. Następnie pomyśl o sobie. Następnie poproś o pomoc.
+0

Może mógłbyś zorganizować swoje odpowiedz trochę lepiej (podpunkty). To bardziej przypomina ścianę z tekstem. – ziggystar

+0

@ziggystar, dlaczego nie używać struktury samemu w swoim komputerze? używałbyś go tylko raz, następnym razem, gdy nie będziesz musiał go czytać, usłyszysz go ponownie, bo go zapamiętasz. –

+1

2,3 i 4 nie mogą być wykonane w ten sam sposób w Android Studio. Jak mogę to zrobić? –

7

używam z powodzeniem Scala 2.11.7 + Android Studio + Gradle z tej wtyczki gradle-android-scala-plugin i bieżącej config:

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

app/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

Dziękuję za to! – byrnedo

Powiązane problemy