几天前,我升级了我的Android Studio,现在我遇到了问题。
其实我正在尝试从我的项目构建一个APK文件,以便在真实设备上测试我的应用程序,当我点击构建 - >构建Apk 然后我在Message Gradle Build中收到几个错误。我不知道为什么会出现这些错误,请详细说明原因。
错误
错误:将字节码转换为dex时出错:
原因:com.android.dex.DexException:多个dex文件定义Lcom / android / volley / VolleyError;
错误:任务执行失败':app:transformClassesWithDexForDebug'。 com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:org.gradle.process。 internal.ExecException:进程'命令'C:\ Program Files \ Java \ jdk1.8.0_51 \ bin \ java.exe''以非零退出值2结束
build.gradle文件
apply plugin: 'com.android.application'
android {
signingConfigs {
}
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.dovezeal.gapp"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
//compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:support-v4:23.3.0'
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:design:23.1.1'
// Volley
compile 'com.android.volley:volley:1.0.0'
//compile 'com.mcxiaoke.volley:library:1.0.+'
/* compile files('libs/com.mcxiaoke.volley library-1.0.0.jar')*/
// RecyclerView
compile 'com.android.support:recyclerview-v7:23.0.+'
// A simple way to define and render UI specs on top of your Android UI.
compile 'org.lucasr.dspec:dspec:0.1.1'
compile files('libs/library-1.0.0.jar')
// YouTube Player
compile files('libs/YouTubeAndroidPlayerApi.jar')
// GOSN
/* compile files('libs/gson-2.2.3.jar')*/
}
编辑 - 1
正如janki gadhiya在下面的评论中所说,要更改minifyEnabled true
并尝试在defaultConfig下添加multiDexEnabled true
通过这些更改,上述错误都消失了,但现在出现以下错误。
答案 0 :(得分:29)
build.gradle文件
apply plugin: 'com.android.application'
android {
signingConfigs {
}
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.dovezeal.gapp"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/license.txt'
exclude 'META-INF/notice.txt'
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
//compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:support-v4:23.3.0'
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:design:23.1.1'
// as you already compiled gradle for volley here
compile 'com.android.volley:volley:1.0.0'
// RecyclerView
compile 'com.android.support:recyclerview-v7:23.0.+'
compile 'org.lucasr.dspec:dspec:0.1.1'
// you don't need this so comment the below line.
//compile files('libs/library-1.0.0.jar')
// YouTube Player
compile files('libs/YouTubeAndroidPlayerApi.jar')
}
编辑:解释
您的错误1 - 2 :表示您的项目中有超过65,000种方法,所以我告诉您设置multiDexEnable true
。
您的错误3 :表示您拥有多个具有类Request$Priority.class
实现的库,因此编译器很困惑可以选择哪个。因此它显示错误重复条目。这将由packaging options
解决,这将允许您使用重复文件。
答案 1 :(得分:1)
在构建gradle中添加它
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
答案 2 :(得分:1)
我也遇到了同样的错误。添加时 编译'com.google.firebase:firebase-ads:10.2.0' 但是当我按照以下方式删除它时:
hdfs:/...
并在BuildVarient中使用调试模式。
我认为它会对你有所帮助。
答案 3 :(得分:0)
在更新firebase任何谷歌播放服务时,然后尝试更新所有库。这对我有用。希望它在某些情况下有效。
答案 4 :(得分:-1)
回答迟到但我面临同样的问题。
我能够使用multiDexEnabled
- >来纠正它true
并在build.gradle中使用了打包选项,发布更改.apk已成功安装。
语法:
defaultConfig {
....
....
multiDexEnabled true
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/license.txt'
exclude 'META-INF/notice.txt'
}
buildTypes {
...
...
}
希望它有所帮助。