【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
通过前面几节的学习,我们已经可以开发出来一个可用的插件了,但是还无法把开发的插件包分发给其他人用(给其他人安装或者上传到插件商城),这一节就是展示如何构建一个可分发的插件包。
进入插件源码目录,注意查看ext.guard的值,默认为false,需要构建加密插件包,要将这个值改为true;
执行命令
gradle zip
执行完毕后,可以在插件源码目录/build/install目录下看到构建好的插件安装包(一个zip文件),使用这种配置构建出来的插件代码,无法反编译。
关键构建配置
ext { /** * 项目中依赖的jar的路径 * 1.如果依赖的jar需要打包到zip中,放置在lib根目录下 * 2.如果依赖的jar仅仅是编译时需要,防止在lib下子目录下即可 */ libPath = "$projectDir/../webroot/WEB-INF/lib" /** * 是否对插件的class进行加密保护,防止反编译 */ guard = true def pluginInfo = getPluginInfo() pluginPre = "fine-plugin" pluginName = pluginInfo.id pluginVersion = pluginInfo.version outputPath = "$projectDir/../webroot/WEB-INF/plugins/plugin-" + pluginName + "-1.0/classes" }
注意:在进行插件调试时,不可开启加密保护模式
进入插件源码目录,注意查看ext.guard的值,默认为false即可;
执行命令
gradle zip
执行完毕后,可以在插件源码目录/build/install目录下看到构建好的插件安装包(一个zip文件),使用这种配置构建出来的插件代码,可以被反编译。
关键构建配置(去掉了com.fr.plugin.pack.PluginPretreatmentTask任务)
ext { /** * 项目中依赖的jar的路径 * 1.如果依赖的jar需要打包到zip中,放置在lib根目录下 * 2.如果依赖的jar仅仅是编译时需要,防止在lib下子目录下即可 */ libPath = "$projectDir/../webroot/WEB-INF/lib" /** * 是否对插件的class进行加密保护,防止反编译 */ guard = false def pluginInfo = getPluginInfo() pluginPre = "fine-plugin" pluginName = pluginInfo.id pluginVersion = pluginInfo.version outputPath = "$projectDir/../webroot/WEB-INF/plugins/plugin-" + pluginName + "-1.0/classes" }
6 Comments
cfw
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':plugin-function:compile_encrypt_javas'.
> java.io.IOException: bad magic number: d4db0183
Anonymous
java.io.IOException: bad magic number: a43e01dd
为什么老是报这个错误,gradle build的时候也报,gradle zip也报
Anonymous
项目的加密文件似乎有问题,我不加密就不会报错Execution failed for task ':plugin-function:compile_encrypt_javas'.,加密就报错
Anonymous
我也是诶,那到底是要true还是false
Anonymous
选择false就行了。true是加密,false是不加密
Anonymous
可以尝试先运行项目,这样的话插件就可以加密了。