J'ai un problème après la migration d'Android Studio 1.5 à 2.0
Dans l'un de mes projets (un seul), je ne peux pas utiliser le bouton d'exécution Android en studio,
car alors, la construction échoue sur la tâche de dégradé "transformClassesWithDexForDebug"
avec erreur:
:app:transformClassesWithDexForDebug
AGPBI: {"kind":"error","text":"Uncaught translation error: com.Android.dx.cf.code.SimException: local variable type mismatch: attempt to set or access a value of type Java.lang.Object using a local variable of type int. This is symptomatic of .class transformation tools that ignore local variable information.","sources":[{}]}
AGPBI: {"kind":"error","text":"1 error; aborting","sources":[{}]}
FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.Android.build.api.transform.TransformException: Java.lang.RuntimeException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/Java-8-Oracle/bin/Java'' finished with non-zero exit value 1
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.Java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.Java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.Java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.Java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.Java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.Java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.Java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.Java:43)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:203)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:185)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.Java:66)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.Java:50)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.Java:25)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.Java:110)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.Java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.Java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.Java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.Java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.Java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.Java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.Java:30)
at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.Java:154)
at org.gradle.internal.Factories$1.create(Factories.Java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:52)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.Java:151)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.Java:32)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.Java:99)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.Java:93)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:62)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.Java:93)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.Java:82)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.Java:94)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.Java:46)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.Java:35)
at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.Java:58)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.Java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.Java:43)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.Java:28)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.Java:78)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.Java:48)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.Java:52)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.Java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.Java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.Java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.Java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.Java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.Java:72)
at org.gradle.util.Swapper.swap(Swapper.Java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.Java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:120)
at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.Java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.Java:66)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.Java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.Java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.Java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:120)
at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.Java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.Java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.Java:246)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.Java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.Java:40)
Caused by: Java.lang.RuntimeException: com.Android.build.api.transform.TransformException: Java.lang.RuntimeException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/Java-8-Oracle/bin/Java'' finished with non-zero exit value 1
at com.Android.builder.profile.Recorder$Block.handleException(Recorder.Java:54)
at com.Android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.Java:57)
at com.Android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.Java:47)
at com.Android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.Java:173)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.Java:75)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.Java:244)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.Java:220)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.Java:231)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.Java:209)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.Java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:61)
... 70 more
Caused by: com.Android.build.api.transform.TransformException: Java.lang.RuntimeException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/Java-8-Oracle/bin/Java'' finished with non-zero exit value 1
at com.Android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.Java:425)
at com.Android.build.gradle.internal.pipeline.TransformTask$3.call(TransformTask.Java:178)
at com.Android.build.gradle.internal.pipeline.TransformTask$3.call(TransformTask.Java:174)
at com.Android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.Java:55)
... 79 more
Caused by: Java.lang.RuntimeException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/Java-8-Oracle/bin/Java'' finished with non-zero exit value 1
at com.Android.ide.common.internal.WaitableExecutor.waitForTasksWithQuickFail(WaitableExecutor.Java:119)
at com.Android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.Java:365)
... 82 more
Caused by: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/Java-8-Oracle/bin/Java'' finished with non-zero exit value 1
at com.Android.builder.core.AndroidBuilder.runDexer(AndroidBuilder.Java:1473)
at com.Android.builder.core.AndroidBuilder.preDexLibraryNoCache(AndroidBuilder.Java:1659)
at com.Android.builder.internal.compiler.PreDexCache.preDexLibrary(PreDexCache.Java:119)
at com.Android.builder.core.AndroidBuilder.preDexLibrary(AndroidBuilder.Java:1614)
at com.Android.build.gradle.internal.transforms.DexTransform$PreDexTask.call(DexTransform.Java:475)
at com.Android.build.gradle.internal.transforms.DexTransform$PreDexTask.call(DexTransform.Java:429)
Caused by: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/Java-8-Oracle/bin/Java'' finished with non-zero exit value 1
at com.Android.builder.core.AndroidBuilder.runDexer(AndroidBuilder.Java:1457)
... 5 more
Caused by: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/Java-8-Oracle/bin/Java'' finished with non-zero exit value 1
at com.Android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.Java:43)
at com.Android.builder.core.AndroidBuilder$2.call(AndroidBuilder.Java:1465)
at com.Android.builder.core.AndroidBuilder$2.call(AndroidBuilder.Java:1457)
Caused by: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/Java-8-Oracle/bin/Java'' finished with non-zero exit value 1
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.Java:367)
at com.Android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.Java:41)
... 2 more
ce qui est encore plus frustrant, cela ne se produit pas lorsque j'utilise la commande de terminal où sont les mêmes tâches de gradle
./gradlew clean generateDebugSources generateDebugAndroidTestSources mockableAndroidJar prepareDebugUnitTestDependencies assembleDebug
Les fichiers apk sont bien générés Un problème apparaît sous MAC et Linux, il n'est donc pas spécifié pour la plate-forme, mais il n'apparaît pas dans Android Studio 1.5
Je poste mon fichier gradle.build
Merci d'avance
apply plugin: 'com.Android.application'
apply plugin: 'com.neenbedankt.Android-apt'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-Android-extensions:$kotlin_version"
}
}
Android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.wojtek.MyProject"
minSdkVersion 19
targetSdkVersion 23
versionCode 4
versionName "0.1.3"
testInstrumentationRunner 'com.wojtek.my_project.AndroidTestRunner'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
testOptions {
unitTests.returnDefaultValues = true
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile "com.Android.support:support-annotations:$support_version"
compile "com.Android.support:appcompat-v7:$support_version"
compile "com.Android.support:recyclerview-v7:$support_version"
compile "com.Android.support:cardview-v7:$support_version"
compile "com.Android.support:design:$support_version"
compile "com.Android.support:palette-v7:$support_version"
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "io.reactivex:rxkotlin:$rx_kotlin"
compile "org.jetbrains.anko:anko-sqlite:$anko_version"
compile 'io.reactivex:rxandroid:1.1.0'
compile "com.squareup.retrofit2:retrofit:$retrofitVersion"
compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'
compile "com.squareup.retrofit2:converter-gson:$retrofitVersion"
compile "com.squareup.retrofit2:adapter-rxjava:$retrofitVersion"
apt "com.google.dagger:dagger-compiler:${daggerVersion}"
compile "com.google.dagger:dagger:${daggerVersion}"
provided 'org.glassfish:javax.annotation:10.0-b28'
compile 'com.squareup.picasso:picasso:2.5.2'
//TEST******************************************************************************************
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile "com.Android.support:support-annotations:$support_version"
androidTestCompile "com.Android.support.test.espresso:espresso-core:$ESSPRESSO_VERSION"
androidTestCompile ("com.Android.support.test.espresso:espresso-contrib:$ESSPRESSO_VERSION"){
exclude group: 'com.Android.support', module: 'appcompat'
exclude group: 'com.Android.support', module: 'support-v4'
exclude module: 'recyclerview-v7'
}
androidTestCompile 'com.Android.support.test:runner:0.4.1'
androidTestCompile 'com.Android.support.test:rules:0.4.1'
androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
androidTestApt "com.google.dagger:dagger-compiler:$daggerVersion"
}
pendant quelques semaines, j'essayais de résoudre ce problème.
Maintenant, j'ai trouvé une solution de contournement pour cela. Si quelqu'un rencontre le même problème, il est utile de désactiver les paramètres d'exécution instantanée dans Android Studio.
Je sais que ce n'est pas une solution mais c'est la meilleure chose pour le moment.
acclamations Wojtek
ajouter
dexOptions {
javaMaxHeapSize "4g"
}
sous Android
Je redémarre Android Studio (2.0) lorsque j'ai ce problème. Alors ça marche. Aucune modification dans les fichiers de gradation ou désactivation de l'exécution instantanée requise.
Pour résoudre ce problème, il me suffisait d'ajouter les lignes suivantes au fichier build.gradle de l'application mobile:
...
Android {
...
// Enabling multidex support.
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "4g"
}
...
}
dépendances {
...
compile 'com.Android.support:multidex:1.0.0'
...
}
Pour moi, ajouter cette ligne (ou commenter parce que c'est écrit là dans la 13ème ligne) dans gradle.properties
a fonctionné:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
De plus, j'ai désactivé Instant Run (Android Studio 2.1.2).
J'ai le même problème, sur linux. Pour une raison quelconque, certains fichiers et répertoires à l'intérieur de/build ne peuvent pas être supprimés, pas même avec 'Sudo -rf', et c'est l'origine du problème pour moi. J'ai construit le projet dans un MacBookPro et aucun problème.
La refactorisation de la bibliothèque m'a aidée à résoudre ce problème. Cela a certainement aidé à supprimer les classes en double du module library ou du module app.
attempt to set or access a value of type Java.lang.Object using a local variable of type int
On dirait que dans certains endroits, ProGuard optimise l’allocation des variables, mais le fait de manière incorrecte.
Essayez de désactiver cette optimisation en ajoutant la ligne ci-dessous dans votre proguard-rules.pro
:
-optimizations !code/allocation/variable
J'ai découvert de nombreuses solutions mais j'ai résolu ce problème en ajoutant:
Sol 1: In build.gradle
:
defaultConfig {
multiDexEnabled true
}
Nettoyez votre projet et reconstruisez.
Sol 2: Si vous avez toujours un problème dans local.properties
add,
org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m
Sol 3 Pourtant, vous avez le problème ajouter ci-dessous la dépendance mentionnée:
compile 'com.Android.support:multidex:1.0.1'
Toute solution fonctionnera certainement pour vous. Sinon, ajoutez les 3 dans votre application.
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
multiDexEnabled true
}
Il suffit de définir cela dans le fichier build.gradle de votre application.
La réponse acceptée pourrait fonctionner, mais je vais partager ce qui a résolu le problème avec moi. Cela était dû au nombre maximal de méthodes atteintes après l'ajout d'une dépendance de bibliothèque supplémentaire.
Voir ce guide ici pour résoudre ce problème, passez à la section Configuration de votre application pour Multidex avec Gradle pour aller au but.
Ça marche pour moi
Dans build.gradle, Mettez votre version actuelle d'Android comme exemple 3.0.1
dépendances { classpath 'com.Android.tools.build:gradle: 3.0.1 '}
Dans gradle-wrapper.properties, Changez votre version de gradule comme exemple gradle-4.4 DistributionUrl = https: //services.gradle.org/distributions/ gradle-4.4 - all.Zip
J'espère que cela peut aider!
Aucune de ce qui précède n'a fonctionné pour moi, mais ce guide de développeur.Android.come a fonctionné pour moi:
https://developer.Android.com/studio/build/multidex.html
Il dit ce qui suit:
Si votre minSdkVersion est défini sur 21 ou une version ultérieure, il vous suffit de définir multiDexEnabled sur true dans votre fichier build.gradle au niveau du module, sous la forme enter code here
ici:
Android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 25
multiDexEnabled true
}
...
}
Toutefois, si votre minSdkVersion est défini sur 20 ou moins, vous devez utiliser la bibliothèque de support multidex comme suit:
Modifiez le fichier build.gradle au niveau du module pour activer multidex et ajoutez la bibliothèque multidex en tant que dépendance, comme indiqué ci-dessous:
Android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 25
multiDexEnabled true
}
...
}
dependencies {
compile 'com.Android.support:multidex:1.0.1'
}