Android Studio:将字节码转换为 dex:Multiple dex 文件时出错 define Ljavax/mail/internet/ParameterList$ToStringBuffer;
Android Studio : Error converting bytecode to dex:Multiple dex files define Ljavax/mail/internet/ParameterList$ToStringBuffer;
我最近升级到 Android Studio 3.0.1,当 运行 程序出现此错误时:
我的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.mrunal.myadmin"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries = false
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.google.firebase:firebase-auth:11.0.4'
implementation 'com.google.firebase:firebase-database:11.0.4'
implementation 'com.google.firebase:firebase-storage:11.0.4'
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:multidex:1.0.1'
implementation 'javax.mail:javax.mail-api:1.5.3'
implementation 'com.android.support:support-vector-drawable:26.1.0'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation files('libs/mail.jar')
}
apply plugin: 'com.google.gms.google-services'
清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.felicity.myadmin">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:name="android.support.multidex.MultiDexApplication"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Email_Activity"></activity>
</application>
</manifest>
我已经试过了
- 清理并重建
- 去掉二次编译jar
我在 SO 上搜索了很多相关问题,但没有任何帮助。
请任何人帮助我
问题已解决,
我刚改implementation 'com.android.support:multidex:1.0.1'
到
implementation 'com.android.support:multidex:1.0.2'
并且有效
更新您的 multidex 只是解决您的问题的临时方法。如果您使用 proguard 发布 apk,同样的问题会再次困扰您。
问题可能是因为您使用的是同一个库:
implementation 'javax.mail:javax.mail-api:1.5.3'
和
implementation files('libs/mail.jar')
只用一个。
你也不需要使用:
implementation files('libs/mail.jar')
如果您正在使用:
implementation fileTree(include: ['*.jar'], dir: 'libs')
您可能不需要为您的 apk 使用 multidex,因为您的依赖项不超过 65k 限制。
我最近升级到 Android Studio 3.0.1,当 运行 程序出现此错误时:
我的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.mrunal.myadmin"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries = false
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.google.firebase:firebase-auth:11.0.4'
implementation 'com.google.firebase:firebase-database:11.0.4'
implementation 'com.google.firebase:firebase-storage:11.0.4'
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:multidex:1.0.1'
implementation 'javax.mail:javax.mail-api:1.5.3'
implementation 'com.android.support:support-vector-drawable:26.1.0'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation files('libs/mail.jar')
}
apply plugin: 'com.google.gms.google-services'
清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.felicity.myadmin">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:name="android.support.multidex.MultiDexApplication"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Email_Activity"></activity>
</application>
</manifest>
我已经试过了
- 清理并重建
- 去掉二次编译jar
我在 SO 上搜索了很多相关问题,但没有任何帮助。 请任何人帮助我
问题已解决,
我刚改implementation 'com.android.support:multidex:1.0.1'
到
implementation 'com.android.support:multidex:1.0.2'
并且有效
更新您的 multidex 只是解决您的问题的临时方法。如果您使用 proguard 发布 apk,同样的问题会再次困扰您。
问题可能是因为您使用的是同一个库:
implementation 'javax.mail:javax.mail-api:1.5.3'
和
implementation files('libs/mail.jar')
只用一个。
你也不需要使用:
implementation files('libs/mail.jar')
如果您正在使用:
implementation fileTree(include: ['*.jar'], dir: 'libs')
您可能不需要为您的 apk 使用 multidex,因为您的依赖项不超过 65k 限制。