-
Notifications
You must be signed in to change notification settings - Fork 1.1k
smalidea
Ben Gruver edited this page Apr 3, 2015
·
20 revisions
smalidea is a smali language plugin for IntelliJ IDEA/Android Studio
It is currently in "alpha" release, and is in active development.
##Features ###Current Features
- Syntax Highlighting/Syntax Errors
- Bytecode level debugging
- Breakpoints
- Instruction level single stepping
- Adding watches for arbitrary (non-named) registers
- Full java-style expression support in locals window, etc. while debugging
- Go to Definition
- Find Usages
- Renaming
- Referencing smali classes from java code (except it can't actually be compiled, yet)
- Issue reporting - easily create a new github issue from the error dialog
###Planned Features
- Auto-complete (instruction names, class/method/field references, etc.)
- Compile support for smali-only projects
- Robust error detection (e.g. full bytecode verification)
- Smoother project import process
- Automatic detection of source directory
- Choosing sdk
- Wizard for importing an apk as a new project
- "Smali Class" entry in "New..." context menu
- Show all registers with a value in "locals" pane
- Ability to set the value of a register in "watch" pane
###Potential Features
- Compile support for mixed smali+java projects
- "Introduce new register" intention
- Expose register type analysis data
- Show the expected type of a register at any point
- Find locations where the register's value could have been set
- Download the latest smalidea zip file from the Bitbucket download page
- In IDEA/AS, go to Settings->Plugins and click the "Install plugin from disk" button, selecting the downloaded smalidea zip file
- Click "Apply" and restart IDEA/AS
- ???
- Profit!
Note: Single-instruction stepping is only supported in IDEA 14.1 and greater, and any future version of Android Studio based on IDEA 14.1 or greater. In earlier versions, attempting to single step will step to the next .line directive, instead of stepping to the next instruction.
- Manually disassemble an application using baksmali into a "src" subdirectory of a new project directory, e.g.
baksmali myapp.apk -o ~/projects/myapp/src
- In IDEA, import a new project, and select the project directory. e.g.
~/projects/myapp
- Use the "Create project from existing sources" option when importing the project
- Once the project has been created, right click on the src directory and select "Mark Directory As->Sources Root"
- Open the project settings and select/create an appropriate JDK
- Install/start the application on the device
- Run ddms, and select the application's process
- In IDEA, Create a new "Remote" debug configuration (Run->Edit Configurations), and change the debug port to 8700
- Run->Debug
- The application should pause if/when the breakpoint is hit, at which point you can single step, add watches, etc.