2014-05-16 18 views
18

Android là nền tảng tuyệt vời. Scala là ngôn ngữ tuyệt vời. Intellij Idea là một IDE tuyệt vời.Android + Scala + Intellij 13

Tất cả chúng có thể hoạt động cùng nhau như thế nào?

Lưu ý: Đó là câu trả lời tự. Nhưng nếu bạn có thêm thông tin, vui lòng chia sẻ ở đây.

+0

! Tin tốt (ít nhất là cho tôi). Android + Scala + AndroidStudio hiện là bạn bè :) Cảm ơn anh chàng này cho bài viết của mình http://engineering.gutefrage.net/2015/01/15/building-an-android-app-using-scala/ –

Trả lời

26

Có thể.

Điều kiện tiên quyết: Đã cài đặt SDK Scala. Đã cài đặt plugin Scala Intellij. Đã bật plugin Android Intellij.

Không cần SBT và plugin của bên thứ ba. Không có Gradle. Hỗ trợ Gradle chưa tương thích với plugin Scala. Thông báo cho tôi nếu có.

  1. Tạo dự án mới: Trong Intellij> Dự án New> Android: Ứng dụng mô-đun> ... dự án Tên, Chọn mức API, Tạo MyActivity như đề xuất> Finish
  2. Tạo Thư viện Scala: Mở Cấu trúc Dự án> Cài đặt Nền tảng> Thư viện Toàn cầu> Thư viện Toàn cầu Mới> Java> Duyệt qua Scala SDK/lib> Chọn scala-library.jar [Tùy chọn thêm liên kết vào tài liệu và nguồn]
  3. Tạo Thư viện Trình biên dịch Scala: Mở Cấu trúc Dự án> Thư viện Toàn cầu Mới> Java> Duyệt qua Scala SDK/lib> Chọn scala-library.jar, scala-compiler.jar, scala-reflect.jar
  4. Thêm Scala vào mô-đun dự án: Mở Cấu trúc dự án > Mô-đun> Mở rộng [mô-đun chính của bạn]> + Thêm> Scala> Chọn "Thư viện trình biên dịch" được thêm trước đó (nên được liệt kê trong danh sách thả xuống)
  5. Thêm Thư viện Scala vào dự án Mô-đun: Cấu trúc dự án mở> Mô-đun> Chọn [mô-đun của bạn]: Phụ thuộc> + Thêm> Thư viện> Chọn "Scala-lib" (trước đây được thêm vào Thư viện toàn cầu)
  6. Thêm proguard (gần đây đã phát hiện ra rằng Proguard không cần thiết để thử nghiệm nữa): Thêm thông tin sau vào proguard-project.txt>Scala Proguard. mở Cấu trúc dự án> Modules> Mở rộng [mô-đun chính của bạn]> Android: Proguard> Enable "Run Proguard"> Thêm Proguard-project.txt của bạn (có mặc định Android SDK android-proguard.txt)
  7. Tạo Scala Activity class: (Lưu ý: Bạn đã có phiên bản Java của MyActivity được tạo bởi template: /src/[your_package]/[MyActivity.class]). Phải nhấp/src/[your_package]> Mới> Lớp Scala> Đặt tên là [MyActivity]> Ok. Sao chép tất cả mã từ java MyActivity.class vào MyActivity.scala mới tạo> Intellij đề xuất "Chuyển đổi mã từ Java"> Ok. Bây giờ bạn có đầy đủ chức năng MyActivity.scala. Xóa java MyActivity.class (không có tùy chọn xóa an toàn)> Kiểm tra AndroidManifest.xml vẫn được liên kết với MyActivity.
  8. Thưởng thức: Chạy ứng dụng trong trình mô phỏng hoặc thiết bị. Nếu xảy ra sự cố (như thường lệ), vui lòng xem lại các bước của bạn. Nghĩ về bản thân. Hơn yêu cầu giúp đỡ.
+0

Có thể bạn có thể cấu trúc trả lời tốt hơn một chút (các mục phụ). Nó giống như một bức tường văn bản. – ziggystar

+0

@ziggystar, tại sao không sử dụng cấu trúc đó cho chính bạn tại máy của bạn? bạn chỉ sử dụng nó một lần, lần sau bạn sẽ không cần phải đọc nó nữa bởi vì bạn sẽ nhớ nó. –

+1

2,3 và 4 không thể thực hiện theo cách tương tự trong Android Studio. Làm thế nào tôi có thể làm điều đó? –

7

tôi sử dụng successfuly Scala 2.11.7 + Android Studio + Gradle với plugin này gradle-android-scala-plugin và cấu hình hiện tại:

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

Cảm ơn bạn vì điều đó! – byrnedo

Các vấn đề liên quan