Recentemente ho iniziato a studiare lo sviluppo di Android e ho deciso di seguire i seguenti processi di sviluppo:
- Preinstallare Scala in emulatore
- Modifica i file sorgente in IntelliJ IDEA 11
- Compilare il progetto con sbt nella riga di comando
- Classi generate da Dex senza librerie Scala
- Crea APK e verifica nell'emulatore
Nei passaggi precedenti, eccetto il passaggio 3, penso che altri passi possano essere facilmente gestiti da riga di comando / makefile. Quindi eccomi qui, voglio un esempio di build.sbt per permettermi di specificare facilmente le seguenti informazioni:
- Directory di origine
- Biblioteche di riferimento
- Directory di output
Sono a conoscenza del plug-in sbt android e del plug-in idea sbt, ma voglio evitarli per il seguente motivo: progetti generati da Android plugin dex Librerie Scala per ogni build ma voglio avere il controllo su quella parte: Voglio saltare Librerie di Scala per lo sviluppo ma includerle per la build di rilascio, che richiede un sacco di scavo se lo faccio con il plugin ma può essere facilmente gestito se è fatto da riga di comando / makefile.
Se nel complesso quello che ho intenzione di fare ha senso, qualcuno che abbia familiarità con sbt può fornire un esempio di esempio build.sbt? Ho già passato ore a seguire le esercitazioni di sbt, ma ho ritenuto che fosse così difficile far sembrare ciascuna una semplice modifica al comportamento predefinito di sbt.
Una domanda a parte, sembra che le directory sorgente aggiunte da UnmanagedSourceDirectories vengano compilate ogni volta indipendentemente dal timestamp. In questo caso, che senso ha usare sbt? Posso solo alimentare tutti i file sorgenti in scalac.
Aggiorna
Questo è build.sbt basato sulla risposta di Daniel C. Sobral . Quando digito compila sbt, stampa solo alcune informazioni come "Imposta progetto corrente su HelloAndroid ...". Non avviene alcuna compilazione.
name := "HelloAndroid"
scalaVersion := "2.8.2"
unmanagedSourceDirectories := List(
file("src"),
file("gen"))
libraryDependencies := List() // remove Scala's library from dependencies
unmanagedJars := List(Attributed.blank(file("C:/bin/android/platforms/android-10/android.jar")))
target := file("target")
Non mi aspettavo che fosse compilato perché ho ancora bisogno di elaborare i file jar, ma almeno dovrei ottenere qualche errore del compilatore. Qualche suggerimento?
UPDATE : la compilazione sbt restituisce quanto segue:
[info] Set current project to HelloAndroid (in build file:/C:/Users...
[success] Total time: 0 s, completed May 14, 2012 10:36:23 AM
Ho due file sorgente nella directory src:
src/com/example/[HelloScala.scala MyActivity.java]
Nessun file di classe è stato trovato nella cartella di destinazione.