插件开发官方网站:http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started.html


下载smalidea源码 (需要从分支才能下载到)

Git clone https://bitbucket.org/JesusFreke/smali.git -b smalidea

或者

git clone https://github.com/JesusFreke/smali.git -b smalidea


下载完成后,在执行git clone命令的目录下新增加一个smali目录,目录内容如图:
IDEA编译smalidea源码

导入idea

打开Terminal,准备创建idea配置文件

cd smali 进入目录

gradle idea 下载所需依赖并创建idea项目文件,如果没有安装gradle,则将gradle 换成 ./gradlew,这个脚本会自动下载gradle

完成后用idea打开项目:

->打开idea
->Open
->选择smali目录

成功后如图:

IDEA编译smalidea源码

smalidea显示的是插件的图标


修改SDK为intelij SDK

选中项目,右键Open Module Settings -> Modules -> smalidea -> Module SDK -> New... 按钮选择InteliJ Platform Plugin SDK,选择idea所在目录,确定后如图:

IDEA编译smalidea源码

根据idea版本的不同,sdk显示的内容也不同。


添加jdi支持(蓝色高亮部分是关键)

IDEA编译smalidea源码

将tools.jar添加到intelij sdk的classpath中。


添加idea源码目录

为了增强调试,可以添加idea的源码目录

IDEA编译smalidea源码

转换源码

调用antlr和jflex将smaliParser.g smaliTreeWalker.g smaliLexer.jflex expectedTokensTestGrammer.g smalideaParser.g转为Java源码

在之前打开的Terminal中依次输入:

gradle generateTestGrammarSource

gradle generateGrammarSource 

gradle generateJFlexSource

gradle generateParserAntlrSource

指令完成后将smali模块中生成的java目录设置为源码目录:

IDEA编译smalidea源码

将build->generated-src->antlr和jflex->main和test目录 右键Mark Directory As -> Sources Root


配置完成后开始编译

在Project中选中smalidea项,在Build菜单中选择Prepare Plugin Module 'smalidea' For Deployment开始编译,成功后如图:


IDEA编译smalidea源码


相关文章: