Android Studio org.gradle.process.internal.ExecException甚至使用multiDexEnabled

时间:2016-03-14 07:09:20

标签: java android android-studio android-gradle

我正在尝试在Android上移植Apache Flink。这是我的build.gradle文件:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "hk.ust.symlab.mobiflink"
        minSdkVersion 23
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/maven/org.apache.flink/force-shading/pom.xml'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/maven/org.apache.flink/force-shading/pom.properties'
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/maven/com.google.guava/guava/pom.xml'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/maven/com.google.guava/guava/pom.properties'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE.txt'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:3.8.1'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.android.support:design:23.2.1'
    compile 'com.android.support:multidex:1.0.1'
    compile 'org.apache.flink:flink-java:1.0.0-hadoop1'
    compile 'org.apache.flink:flink-clients:0.10.2-hadoop1'
}

奇怪的是,如果我不包含compile 'org.apache.flink:flink-clients:0.10.2-hadoop1',那么项目编译并运行没有错误,否则我有这个错误:

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-openjdk-amd64/bin/java'' finished with non-zero exit value 1

我已经阅读了很多关于此问题的问题(例如this之一),但正如您所看到的,我已经包含了multiDexEnabled选项(当我包含{{}时,这已经是必需的1}})

1 个答案:

答案 0 :(得分:0)

尝试将它添加到android部分的build.gradle中

class SidePanelViewController : BackgroundViewController {

var delegate: SidePanelViewControllerDelegate?

@IBOutlet weak var profileImageView: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var name2Label: UILabel!
@IBOutlet weak var menuTableView: UITableView!

let adapter = SidePanelTableAdapter()

override func viewDidLoad() {
    super.viewDidLoad()

    profileImageView.sd_setImageWithURL(NSURL(string: Me.read(Me.Key.profileImage) as! String))
    nameLabel.text = Me.read(Me.Key.displayName) as? String
    name2Label.text = Me.read(Me.Key.displayName2) as? String

    adapter.tableView = menuTableView
    menuTableView.delegate = adapter
    menuTableView.dataSource = adapter
    menuTableView.reloadData()
}
}

然后添加类似下面的应用程序类

    dexOptions {
            incremental = true;
            preDexLibraries = false
            javaMaxHeapSize "4g" // 2g should be also OK
        }

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

然后在清单中提及您的应用程序类

public class MyApplication extends MultiDexApplication {

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(base);
    }