Help us understand the problem. What is going on with this article?

AndroidStudioでgradleの実行時にDebuggerを接続する方法

More than 5 years have passed since last update.

はじめに

Gradleをちょいちょいカスタマイズしたり、Objectにどういうプロパティがあるかを調べるのに、
やはりDebuggerが使えると便利なときがあります。

調べてみると簡単にできるのでメモしておきます。

今回の方法は、
「コマンドラインでgradleを実行」「AndroidStudioからDebuggerを接続」という形です。

Version

  • MacOS(Yosemite) 10.10.3
  • AndroiStudio 1.1.0
  • JVM: 1.7.0
  • Groovy 2.3.6
  • gradle 2.2.1

方法

単に下記URLの方法に従えばOKでした。
http://georgik.sinusgear.com/2014/06/23/how-to-debug-gradle-script/

が、改めて書きます。

コマンドライン側に環境変数を設定する

GRADLE_OPTS 環境変数を以下のようにセットします。

export GRADLE_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005' 

Android Studioの Run/Debug Configurations で remote debugの設定

Run メニューから Edit Configurations を選びます。

Run_と_Menubar.png

左上の+ボタンから Remote を選択

Run_Debug_Configurations.png

適当に名前を付けてOKを押す

Exportした時の環境変数文字列の address=5005 と設定中の address=5005 が同じであることは必要なのだと思います。

Run_Debug_Configurations.png

デフォルトでこうなっていると思うので、何もいじらなくてOKです。

コマンドラインからGradle起動

コマンドラインからGradleを起動すると、 以下のようになって実行がストップします。

% ./gradlew myTask                                                                                                                  
Listening for transport dt_socket at address: 5005

デバッガをアタッチするまで待つようです。

Android StduioからRemote接続Debug

GenerateEnvironmentConfigPlugin_groovy_-__buildSrc__-_app-android-multiregion-build_-____Documents_workspace_UQ_app-android-multiregion-build_.png

Debugアイコンをクリックすると、Debuggerがアタッチされて、Gradleの実行が再開されます。
Breakポイントなど設置してあれば、そこで止まります。

BreakPointがきくところきかないところ

Gradleスクリプトの中の Closure的なブロックではあまり止まらないっぽいです。

def appVersionCode = 1                # ←ここはBreakPointがきく
def appVersionName = "1.0.0"

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')      # ←ここはBreakPointきかない
    androidTestCompile 'junit:junit:4.11'
    androidTestCompile 'org.robolectric:robolectric:2.4'
    androidTestCompile 'org.mockito:mockito-all:1.9.5@jar'
}

さいごに

イマイチ細かいプロパティのドキュメントとか見つからない(ぐぐり力が低いだけかな・・・)ので、これでだいぶ捗りそうです。

mokemokechicken
お気楽極楽会社員です。気ままに投稿しています。
sprocket
"Sprocket(スプロケット)は、Webサイトにおけるコンバージョン(購入・入会・資料請求・問合せ等)を増やしたい企業様向けに、自社開発のWeb接客ツールの導入及びコンバージョン改善コンサルティングを行っている会社です。 "
https://www.sprocket.bz/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした