web-dev-qa-db-fra.com

Impossible d'ouvrir le port du débogueur: Java.net.SocketException «Socket closed»

J'utilise Android Studio, avec plusieurs versions utilisant Gradle, chacune avec un type Debug and Release, organisée comme décrit ici, dans la moitié inférieure . Lorsque j'essaie pour démarrer le débogueur, j'obtiens cette erreur:

Error running androidRecover [installAppDebug]: Unable to open debugger port :     Java.net.SocketException "Socket closed

Je ne parviens pas non plus à attacher le débogueur à mon appareil une fois qu'il fonctionne (il n'affiche que le nom de mon téléphone, pas l'application).

Les 3 saveurs s'installent très bien sur mon téléphone. Je ne peux tout simplement pas me permettre de les déboguer. J'ai également testé la connexion du débogueur sur une tablette Nexus, et j'ai obtenu le même résultat.

Ce n'est pas Gradle spécifiquement dans son ensemble car je peux exécuter d'autres applications basées sur Gradle et attacher le débogueur très bien, donc je me demande si c'est quelque chose avec la façon dont j'ai configuré mon projet Gradle et mes paramètres.

Voici mon build.gradle:

apply plugin: 'Android'
apply from: 'signing.gradle'

Android {
    compileSdkVersion 19
    buildToolsVersion '19.0.3'

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile
                     ('proguard-Android.txt'), 'proguard-rules.txt'
        }
    }

    productFlavors {
        flav1 {
            packageName "com.ex.flav1"
            versionCode 32
            versionName "1.0.5"
            signingConfig signingConfigs.flav1
        }

        flav2 {
            packageName "com.ex.flav2"
            versionCode 33
            versionName "1.0.6"
            signingConfig signingConfigs.flav2
        }

        flav3 {
            packageName "com.ex.flav3"
            versionCode 27
            versionName "1.0.0"
            signingConfig signingConfigs.flav3
        }
    }
}

dependencies {
    compile 'com.Android.support:appcompat-v7:19.+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile files('libs/httpmime-4.2.5.jar')
}

Je ne sais vraiment pas quoi essayer d'autre. Android Studio est complètement à jour. J'ai redémarré Android Studio, mon téléphone et mon ordinateur).

De plus, la semaine dernière, j'avais ce problème, mais c'était une prise spécifique qui était bloquée, d'essayer d'exécuter l'émulateur et mon téléphone en même temps. J'ai également remarqué que plusieurs processus Gradle étaient en cours d'exécution, car il ne les tuait pas tout seul, que je devais souvent tuer Android Studio pour les tuer. Une fois cela corrigé, cela fonctionnait par intermittence.

Faites-moi savoir si vous avez besoin d'autres informations.

Merci, Devin

Edit Je sais enfin pourquoi la réponse de @ hasanaydogar fonctionne et pourquoi cela aurait probablement résolu mon problème si nous l'avions connu à ce moment-là. Voir mon 2e commentaire à ce sujet pour savoir pourquoi, mais en bref, vous devez sélectionner dans cette liste déroulante le nom qui correspond au répertoire racine de votre application.

21
craned

Cliquez simplement sur le bouton (à gauche le bouton RUN).

enter image description here

Sélectionnez Android. Ensuite, exécutez.

Il se connectera à votre appareil.

Et n'oubliez pas de changer la variante de construction

enter image description here

41
hasanaydogar

Je comprends enfin pourquoi j'obtiens cette erreur, je vais donc expliquer comment je Debug maintenant. Notez que j'utilise Gradle (construire plusieurs apk en utilisant le même code), ce qui pourrait influencer la façon dont vous utilisez la troisième partie de cette réponse.

Pour que cela fonctionne, dans la liste déroulante à côté du débogage (icône n ° 1) et des boutons d'exécution dans la barre d'outils supérieure, vous devez avoir celui sélectionné avec l'icône suivante à côté car c'est le nom du répertoire racine de votre application où vit tout votre code:

enter image description here

  1. Pour commencer le débogage depuis le début, j'exécute l'application en mode Debug depuis le début, en utilisant ce bouton dans votre barre d'outils:

enter image description here!

  1. Pour attacher le débogueur à l'application lorsqu'elle est déjà en cours d'exécution comme @scottyab l'a mentionné, je clique sur le bouton Attach Debugger Dans votre barre d'outils:

enter image description here

  1. Pour exécuter la version finale de mon application en mode débogage, j'ai commencé à changer mes chaînes dans la version Debug de strings.xml Dans le chemin du fichier myApp/src/appNameDebug(verses appNameRelease)/res/values/strings.xml, plus facilement - vu ici, sur la moitié inférieure . Quand je dis changement, je veux vraiment dire que j'ai deux versions de toutes les chaînes (3 dans mon cas) nécessaires pour passer de l'utilisation du serveur de débogage à l'utilisation du serveur de publication. Il n'est peut-être pas complètement casher, mais il faut environ 5 secondes pour parcourir le fichier, et maintenez Cmd +/et décommentez et commentez toutes les lignes appropriées.

Ma version Release est juste là quand je suis prêt à construire une apk pour la sortie.

Faire les choses de cette manière a éliminé cette erreur. Je pense que la version Release n'est tout simplement pas faite pour le débogage, et je n'ai pas trouvé de moyen facile d'activer les indicateurs de débogage en mode Release.

6
craned

J'ai réussi à faire fonctionner cela en attachant le débogueur après une construction voir Impossible d'ouvrir le port du débogueur: Java.net.SocketException "Socket fermé"

2
scottyab

J'ai réussi à me débarrasser de ce problème en tuant et en redémarrant le processus adb, j'espère que cela aiderait:]

2
Nick