Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@mokemokechicken

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

さいごに

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

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
17
Help us understand the problem. What are the problem?