2013-12-14 20 views
8

Dường như có rò rỉ bộ nhớ ở đâu đó.Sử dụng Scala với Gradle cho dự án Android

Khi thiết lập một dự án trong IntelliJ và sử dụng các wrapper Gradle:

./gradlew assembleDebug --debug

tôi nhận được những điều sau đây sau khoảng 5 phút:

14:30:15.245 [INFO] [org.gradle.api.Project] processing scala/collection/SeqViewLike$$anon$5.class... 
14:30:53.132 [INFO] [org.gradle.api.Project] processing scala/collection/SeqViewLike$$anon$6.class... 
14:33:51.027 [ERROR] [org.gradle.api.Project] 
14:33:51.028 [ERROR] [org.gradle.api.Project] UNEXPECTED TOP-LEVEL ERROR: 
14:33:51.028 [ERROR] [org.gradle.api.Project] java.lang.OutOfMemoryError: Java heap space 
14:33:51.028 [ERROR] [org.gradle.api.Project] at java.util.HashMap.<init>(HashMap.java:209) 
14:33:51.029 [ERROR] [org.gradle.api.Project] at com.android.dx.ssa.LocalVariableInfo.<init>(LocalVariableInfo.java:66) 
14:33:51.029 [ERROR] [org.gradle.api.Project] at com.android.dx.ssa.LocalVariableExtractor.<init>(LocalVariableExtractor.java:72) 
14:33:51.029 [ERROR] [org.gradle.api.Project] at com.android.dx.ssa.LocalVariableExtractor.extract(LocalVariableExtractor.java:54) 
14:33:51.029 [ERROR] [org.gradle.api.Project] at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java:49) 
14:33:51.030 [ERROR] [org.gradle.api.Project] at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:98) 
14:33:51.030 [ERROR] [org.gradle.api.Project] at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:72) 
14:33:51.030 [ERROR] [org.gradle.api.Project] at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:303) 
14:33:51.030 [ERROR] [org.gradle.api.Project] at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139) 
14:33:51.031 [ERROR] [org.gradle.api.Project] at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94) 
14:33:51.031 [ERROR] [org.gradle.api.Project] at com.android.dx.command.dexer.Main.processClass(Main.java:682) 
14:33:51.031 [ERROR] [org.gradle.api.Project] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634) 
14:33:51.031 [ERROR] [org.gradle.api.Project] at com.android.dx.command.dexer.Main.access$600(Main.java:78) 
14:33:51.032 [ERROR] [org.gradle.api.Project] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572) 
14:33:51.032 [ERROR] [org.gradle.api.Project] at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) 
14:33:51.032 [ERROR] [org.gradle.api.Project] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) 
14:33:51.034 [ERROR] [org.gradle.api.Project] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) 
14:33:51.034 [ERROR] [org.gradle.api.Project] at com.android.dx.command.dexer.Main.processOne(Main.java:596) 
14:33:51.034 [ERROR] [org.gradle.api.Project] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498) 
14:33:51.034 [ERROR] [org.gradle.api.Project] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264) 
14:33:51.035 [ERROR] [org.gradle.api.Project] at com.android.dx.command.dexer.Main.run(Main.java:230) 
14:33:51.035 [ERROR] [org.gradle.api.Project] at com.android.dx.command.dexer.Main.main(Main.java:199) 
14:33:51.035 [ERROR] [org.gradle.api.Project] at com.android.dx.command.Main.main(Main.java:103) 

Tôi đang sử dụng Scala 2.9.3 nhưng kinh nghiệm như nhau vấn đề với 2.10.x.

Đây là số build.gradle của tôi.

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.6.+' 
    } 
} 

apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 19 
    } 
} 

dependencies { 
    compile 'com.android.support:appcompat-v7:+' 

    // Scala. 
    compile 'org.scala-lang:scala-library:2.9.3', 
      'org.scala-lang:scala-compiler:2.9.3' 
} 

Có ai đó biên dịch thành công dự án Android với Gradle + Scala hay không.

Cảm ơn!

+0

Đây là một dự án mẫu mà tôi tìm thấy có thể giúp một số người. https://github.com/yareally/android-scala-intellij-no-sbt-plugin – vaughan

+1

Bạn vẫn có thể tạo dự án Intellij + Scala + Android (không Gradle). Chỉ cần thêm scguard cụ thể proguard tập tin và bạn tốt để đi. –

+0

Cảm ơn bạn đời. Hãy suy nghĩ tôi có thể đi theo cách này. Gradle trông rất vui. – vaughan

Trả lời

0

Dường như bạn đang cố gắng dex toàn bộ thư viện Scala. Bạn có 2 tùy chọn tại đây:

  1. Cố gắng tăng kích thước heap. Bạn có thể đọc cách thực hiện trong this group. Tuy nhiên điều này sẽ không giải quyết vấn đề thời gian xây dựng.
  2. Hãy thử sử dụng bảo vệ trước khi thực sự dexing.
Các vấn đề liên quan