所以我刚刚开始使用Android Studio并开发应用程序,这是迄今为止非常基本的东西,我正在尝试将数据从HTML文件解析到我的应用程序,我遇到了一些问题并且一直在谷歌上搜索在过去的几个小时里,毕竟无法修复它。
这是错误日志:
Error: at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Error: at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Error: at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lorg/jsoup/nodes/Entities$CoreCharset;
Error: at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
Error: at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
Error:com.android.dex.DexException: Multiple dex files define Lorg/jsoup/nodes/Entities$CoreCharset;
Error: at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
Error: at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
Error: at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
Error: at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
Error: at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lorg/jsoup/nodes/Entities$CoreCharset;
这是我的应用程序gradle:
apply plugin: 'com.android.application'
android {
useLibrary 'org.apache.http.legacy'
compileSdkVersion 26
defaultConfig {
applicationId "app.diviwire.transportes"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
exclude 'META-INF/README.md'
exclude 'META-INF/CHANGES'
}
}
dependencies {
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'
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'
compile 'com.android.support:support-compat:26.1.0'
compile 'com.android.volley:volley:1.0.0'
// jsoup HTML parser library @ https://jsoup.org/
compile 'org.jsoup:jsoup:1.11.2'
compile 'com.android.support:multidex:1.0.1'
}
告诉我是否还有其他遗漏,不知道在我刚刚开始的时候添加更多内容。先谢谢你们!
修改 所以我跟随了@IntelliJ Amiya的建议,显然它仍然没有用,我可能做错了但是这是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.diviwire.transportes">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name="android.support.multidex.MultiDexApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainMenuActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".BoatMenuActivity" />
<activity android:name=".HorarioBarcoBarreiroActivity" />
</application>
我还在我的活动中添加了以下内容:
@Override
protected void attachBaseContext(Context base){
super.attachBaseContext(base);
MultiDex.install(this);
}
它仍然给我同样的错误。
答案 0 :(得分:0)
您已达到dex操作的Java虚拟机(JVM)的最大内存分配池,因此您必须增加池内存的大小。
您刚刚在android项目build.gradle文件中添加了以下代码。
dexOptions{
javaMaxHeapSize "4g"
}
只是为dex操作指定Java虚拟机(JVM)的最大内存分配池的选项。
4g是4千兆字节,这是dex操作的最大堆大小。
答案 1 :(得分:0)
在依赖项下的构建 Gradle 添加 classpath 'com.android.tools:r8:1.6.84'
对我有用。