java - 无法合并 Dex - commons apache

标签 java android xml android-studio apache-commons

几个小时以来我一直在尝试修复以下错误:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

读完本指南后,我正在制定待办事项列表 https://guides.codepath.com/android/Basic-Todo-App-Tutorial#persist-items-to-file

一切顺利,但结束后我总是收到显示的错误。 我已经尝试过:

  1. 清理并重建
  2. 删除 gradle
  3. 启用 MultiDex
  4. 重新启动 Android Studio

这是我的app.gradle

    apply plugin: 'com.android.application'

android {

    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.android.organizesify2"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile 'org.apache.commons:commons-io:1.3.2'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:design:26.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

这是我的 java 类:

package com.example.android.organizesify2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

public class ToDoList extends AppCompatActivity {

    private ArrayList<String> items;
    private ArrayAdapter<String> itemsAdapter;
    private ListView lvItems;


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();
        if (id== R.id.toDoList)
        {
            Toast.makeText(this, "Settings", Toast.LENGTH_LONG).show();
        }else if (id== R.id.aboutus){
            Toast.makeText(this, "About us", Toast.LENGTH_LONG).show();

        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_to_do_list);

        lvItems = (ListView) findViewById(R.id.lvItems);


        readItems();


        itemsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1
                ,items);



        lvItems.setAdapter(itemsAdapter);
        setupListViewListener();


    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);

    }



    public void onAddItem(View view){
        EditText etNewItem = (EditText) findViewById(R.id.etNewItem);
        String itemText = etNewItem.getText().toString();
        itemsAdapter.add(itemText);
        etNewItem.setText("");
        writeItems();
    }



    private void setupListViewListener(){
        lvItems.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapter, View item, int pos, long id) {

                items.remove(pos);

                itemsAdapter.notifyDataSetChanged();

                writeItems();
                //Toast.makeText(ToDoList.this, "DONE", Toast.LENGTH_LONG).show();

                return true;
            }
        });
    }


    private void readItems(){

        File filesDir = getFilesDir();
        File todoFile = new File(filesDir, "todo.txt");

        try
        {
            items = new ArrayList<String>(FileUtils.readLines(todoFile));
        }
        catch(IOException e){
            items = new ArrayList<String>();
        }
    }


    private void writeItems(){
        File filesDir = getFilesDir();
        File todoFile = new File(filesDir, "todo.txt");

        try{
            FileUtils.writeLines(todoFile, items);

        } catch (IOException e){
            e.printStackTrace();
        }
    }

}

最佳答案

我解决了 altercompile 'org.apache.commons:commons-io:1.3.2' 对于编译组:'commons-io',名称:'commons-io',版本:'2.4'

关于java - 无法合并 Dex - commons apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47341975/

相关文章:

android - 自适应图标不起作用

Android 应用程序在 Marshmallow 及以上 API 版本上运行,但不在其以下运行

c++ - QXML - child 是否按顺序访问

xml - 在 Perl 中使用 XML::XPath 模块获取节点值

java - 如何在 Java 中创建一个 "global variable"以便所有类都可以访问它?

java - Java 中带有 bouncycaSTLe 的 PBKDF2

Java 新手编码。添加显示消息

android - 识别退款的 Play 商店下载

java - 使用自定义适配器在 ListView 中选择/突出显示多个项目 - Android

java - Android Studio 中的 ScrollView,同时使用上拉刷新