几个小时以来我一直在尝试修复以下错误:
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
一切顺利,但结束后我总是收到显示的错误。 我已经尝试过:
- 清理并重建
- 删除 gradle
- 启用 MultiDex
- 重新启动 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/