search
LoginSignup
17

More than 5 years have passed since last update.

Organization

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

はじめに

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'
}

さいごに

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
17