Welcome to Part 6 of this review of the Pluralsight course Exploring Android Studio
by Larry Schiefer
Larry Schiefer is the CTO and co-founder of HiQES, a mobile, embedded, and application development service company. Larry has over 16 years of experience leading teams, and designing and developing high performance and robust software, and is a Google GDE.
Building and Debugging With Android Studio
Building the Project
We start by learning the “Make Project” command which is found in the Build menu.
Once complete, we can find the created files in the app\build\ directory and these includes the following subdirectories:
Larry explains the purpose of many of these. Then we see the “Clean Project” command cleans the entire project, not just a given module.
We can build modules individually by selecting the module in the project view, right clicking on it to display the menu options, and left clicking on “Make Module”.
Or we can choose “Compile Module” from the build menu, which only compiles our XML, Java, AIDL and/or render script files.
Compile Module does not link them or package them into an APK file.
Running the App
We click the green play arrow and a dialog pops up.
We then either choose a running device and click OK, or choose the Launch emulator radio button and choose an AVD.
We see it running but then our app crashes. A stack trace is displayed in the logcat window.
Larry introduces this window and explains that we can change the log level or search for specific text here.
Debugging the App
Unlike Eclipse or Visual Studio, Android Studio does not have the debugger halt on unhandled exceptions out-of-the-box.
To turn this on, open the Run menu and click “View Breakpoints…”. The dialog that opens has an Exception Breakpoints section.
Check the “Any exception” box and uncheck the “Condition” and “Caught exception” boxes.
With this enabled the debugger now breaks, and we can see the uncaught exception is in the getText method of the resource class.
The resource ID specified is not valid. This is because we’re passing an integer instead of a resource ID.
Before we fix this, Larry explains some of the other controls available in the debug window:
– rerun app
– continue execution
– halt debugger
– breakpoint dialog
– mute all breakpoints
– frames and threads tabs
– choosing a specific thread to debug
– go to current source line of execution
– step over a line of code
– stepping into code
– stepping out of code
– drop the current frame
– run to the current cursor position
– evaluate an expression
He also goes through some of the other settings we may want to setup for breaking on exceptions.
Finally we fix the bug and rerun to verify the fix works.