私は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番目のコメントを参照してください。しかし、要するに、ドロップダウンでアプリのルートディレクトリに一致する名前を選択する必要があります。
ボタン(左側の[実行]ボタン)をクリックするだけです。
Androidを選択します。次に実行します。
デバイスに接続します。
そして、ビルドバリアントを変更することを忘れないでください
私はついにそのエラーを受け取った理由を理解したので、今どのようにDebug
するかを説明します。 Gradle
(同じコードを使用して複数のapkを構築)を使用していることに注意してください。これは、この回答の3番目の部分の使用方法に影響を与える可能性があります。
これらが機能するためには、デバッグ(#1のアイコン)の横にあるドロップダウンおよび上部のツールバーの実行ボタンで、次のアイコンで選択されたボタンを選択する必要があります。すべてのコードが存在するアプリ:
Debug
モードでアプリを実行します。Attach Debugger
_ボタンをクリックします。myApp/src/appNameDebug(verses appNameRelease)/res/values/strings.xml
の_strings.xml
_のDebug
バージョンの文字列をより簡単に変更し始めました- ここで下半分に表示 。変更とは、デバッグサーバーの使用からリリースサーバーの使用に変更するために必要なすべての文字列の2つのバージョン(この場合は3つ)があることを意味します。完全にコーシャーではないかもしれませんが、ファイルに移動し、Cmd + /を押したままにしてコメントを外し、適切な行をすべてコメント化するのに約5秒かかります。私のRelease
バージョンは、リリース用のapkを作成する準備ができているときに使用します。
この方法で物事を行うと、そのエラーがポップアップ表示されなくなりました。 Release
バージョンはデバッグ用に作成されたものではなく、Release
モードのときにデバッグフラグをオンにする簡単な方法は見つかりませんでした。
ビルド後にデバッガーをアタッチすることで、これを機能させることができました デバッガーポートを開けません:Java.net.SocketException "Socket closed"
私はadbプロセスを殺して再起動することでこの問題を取り除くことができました、これが役立つことを願っています:]