web-dev-qa-db-ja.com

デバッガーポートを開けません:Java.net.SocketException“ Socket closed”

私はAndroid Studio、Gradleを使用する複数のフレーバーで、それぞれデバッグとリリースの種類があり、説明に従って構成されています ここで、下半分 。デバッガーを起動するには、このエラーが表示されます。

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

また、実行中のデバイスにデバッガーをアタッチすることもできません(アプリではなく、電話の名前のみが表示されます)。

3つのフレーバーはすべて私の電話に問題なくインストールできます。私はそれらをデバッグさせることができません。 Nexusタブレットへのデバッガーの接続もテストしましたが、同じ結果が得られました。

他のGradleベースのアプリを実行してデバッガーを正常にアタッチできるため、Gradleプロジェクトと設定をどのようにセットアップしたのか疑問に思うので、Gradle全体ではありません。

ここに私の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')
}

私は本当に他に何を試すべきか分かりません。 Android Studioは完全に最新です。再起動しましたAndroid Studio、携帯電話、コンピューター。

また、先週私はこの問題を抱えていましたが、エミュレーターと私の電話を同時に実行しようとしてブロックされたのは特定のソケットでした。また、複数のGradleプロセスを実行していることに気付きました。それは、それらを単独で強制終了するのではなく、多くの場合、Android Studioを強制終了する必要がありました。オフとオン。

他の情報が必要な場合はお知らせください。

ありがとう、デヴィン

Edit@hasanaydogarの答えがなぜ機能するのか、そして、それがわかっていればなぜ問題が解決したのか、ついにわかりました。理由を知るには、2番目のコメントを参照してください。しかし、要するに、ドロップダウンでアプリのルートディレクトリに一致する名前を選択する必要があります。

21
craned

ボタン(左側の[実行]ボタン)をクリックするだけです。

enter image description here

Androidを選択します。次に実行します。

デバイスに接続します。

そして、ビルドバリアントを変更することを忘れないでください

enter image description here

41
hasanaydogar

私はついにそのエラーを受け取った理由を理解したので、今どのようにDebugするかを説明します。 Gradle(同じコードを使用して複数のapkを構築)を使用していることに注意してください。これは、この回答の3番目の部分の使用方法に影響を与える可能性があります。

これらが機能するためには、デバッグ(#1のアイコン)の横にあるドロップダウンおよび上部のツールバーの実行ボタンで、次のアイコンで選択されたボタンを選択する必要があります。すべてのコードが存在するアプリ:

enter image description here

  1. 最初からデバッグを開始するには、ツールバーのこのボタンを使用して、最初からDebugモードでアプリを実行します。

enter image description here!

  1. 前述の@scottyabとして実行されているアプリにデバッガーをアタッチするには、ツールバーの_Attach Debugger_ボタンをクリックします。

enter image description here

  1. デバッグモードでアプリのリリースバージョンを実行するために、ファイルパスmyApp/src/appNameDebug(verses appNameRelease)/res/values/strings.xmlの_strings.xml_のDebugバージョンの文字列をより簡単に変更し始めました- ここで下半分に表示 。変更とは、デバッグサーバーの使用からリリースサーバーの使用に変更するために必要なすべての文字列の2つのバージョン(この場合は3つ)があることを意味します。完全にコーシャーではないかもしれませんが、ファイルに移動し、Cmd + /を押したままにしてコメントを外し、適切な行をすべてコメント化するのに約5秒かかります。

私のReleaseバージョンは、リリース用のapkを作成する準備ができているときに使用します。

この方法で物事を行うと、そのエラーがポップアップ表示されなくなりました。 Releaseバージョンはデバッグ用に作成されたものではなく、Releaseモードのときにデバッグフラグをオンにする簡単な方法は見つかりませんでした。

6
craned

私は以下を参照してこの質問を解決しました SO Answer

Android studio 2.3.2の[実行/デバッグ構成の選択]ボタン

enter image description here

デバッグタイプをネイティブに変更する

enter image description here

2
Eric Lin

ビルド後にデバッガーをアタッチすることで、これを機能させることができました デバッガーポートを開けません:Java.net.SocketException "Socket closed"

2
scottyab

私はadbプロセスを殺して再起動することでこの問題を取り除くことができました、これが役立つことを願っています:]

2
Nick