当前位置:必发365电子游戏 > 编程 > 那么你将无法使用默认的Appdomain实现此任务,为自动生成数据库代码的插件添加UI
那么你将无法使用默认的Appdomain实现此任务,为自动生成数据库代码的插件添加UI
2019-12-19

     依据设计形式的条件:1.照准接口编程,并不是针对贯彻编程。2.前期利用对象组合,并不是类世襲。3.封装变化点。

品类源码

https://github.com/boredream/AndroidDatabaseGeneratorPlugin

基于上边几个基本点的尺度,大家本身可通过包装变化来压缩代码的转移。(通过配备文件来封装变化卡塔尔(قطر‎。

数不清教程

Android Studio Plugin 插件开采教程(后生可畏) —— 开采你的第叁个插件

Android Studio Plugin 插件开垦教程(二) —— 插件SDK中的常用对象介绍

Android Studio Plugin 插件开垦教程(三) —— 制作叁个自动生成数据库代码的插件

Android Studio Plugin 插件开垦教程(四) —— 为自动生成数据库代码的插件增多UI


本学科基于官方文书档案编写,原版地址如下
合保加克赖斯特彻奇语档 http://www.jetbrains.org/intellij/sdk/docs/welcome.html

搭建情形:
下载IntelliJ Idea客商端并设置
https://www.jetbrains.com/idea/download/

不过当大家转移配置文件的时候就须要再度加载就能够挑起重新起动应用程序。为了能够在运作时动态修正配置文件后而无需再一次开动且能及时生效的话,大家就足以用插件来落到实处。然则是针对.net来说,咱们得以把加载的插件放到不相同的AppDomain中去,那样就能够防止当插件配置产生改造的时候而无需重新启航就能够使任何应用程序重新生效。

一、配置SDK

打开IDE后,选择 File | Project Structure
在布署窗口中式茶食击 New... 新扩充SDK,接收 AMDliJ Platform Plugin SDK
(尽管第三次张开IDE,选拔右下角 Configure | Project Defaults | Project Structure 展开配置窗口)

bifa365.com 1

Project Structure

弹出页面中,选择暗许英特尔liJ IDEA文件夹,确认

bifa365.com 2

Project Structure

由此:我们必要把实际的目录放到外接程序集,大家得以用Assembly.Load(卡塔尔常常运行非凡,不过程序集不可能独立卸载(独有Appdomain能够卡塔尔(قطر‎,那意味若是你正在编战胜务器,何况你希望客户没有须求运行和定制服务器即更新他们的外接程序。那么你将不能选取默许的Appdomain完结此职分。要兑现此作用,大家加在一个独立的Appdomain中加载全体外接程序集。当增多或改换文件时,大家将卸载Appdomain,创立新的Appdomain,然后将日前文件加载到内部。

二、新建Plugin Project

在开垦的AMDliJ IDEA 中精选 File | New | Project
左侧菜单选取AMDliJ Platform Plugin项目,SDK选用刚刚新构造的,下一步
其间 Groovy、Python等甚别的叠合的剧情无需勾选
末尾输入项目名称分明,完毕成立

bifa365.com 3

New Project

 

三、配置插件项目

开创好的Plugin项目中,会暗许生成三个 plugin.xml 的铺排文件
里头能够校正该插件项目标相关陈设音信,举例插件名称、插件版本号等,如下图

bifa365.com 4

Paste_Image.png

各标签意义具体为:

配备中填入的消息,会在旁人寻觅你插件的时候表现介绍
File | Settings | Plugins 中查看本来就有插件,可能再点击Browse respositories中浏览插件中央里其余人发表的插件
入选中四个插件时,左侧就足以看见plugin.xml中安插的音讯了
必发365手机版下载平台,同风姿洒脱,这里也得以进行插件的删减和加多安装操作,每一回操作都急需重启软件后技能奏效

bifa365.com 5

Plugins

bifa365.com 6

四、开端编写制定插件

插件是附归于IDE的,为其提供部分小功能,比如Android Studio中,
Code | Generate | Getter and Setter 这几个自动生成get和set方法的,其实正是是个插件

bifa365.com 7

Getter and Setter

当然,这一个都以Android Studio中私下认可自带的,我们得以依靠需求开垦新的插件

品种创造好时有二个src文件夹,能够在里面File | New ...新建文件,
要害有与上述同类三种针对插件的特别文件类型

中间最要紧的是Action类
事前例子中关系了,生成getter setter方法的法力是在菜单栏中的Code | Generate | Getter and Setter选拔的
那正是说大家通力合作创造的插件选项在何地呢?归属哪个菜单呢?

这里在创建Action类的时候就能够钦命操作入口,Action的创制的对话框如下

bifa365.com 8

New Action

开创好Action后,会自行在plugin.xml配置文件的actions标签中新增一个应和的Action动作音信

<actions>
    <!-- Add your actions here -->
    <action id="DatabaseGenerator.GenAction" class="DatabaseGenerateAction" text="Database Generator"
            description="auto generate db code, such as Table / CRUD sql ...">
      <add-to-group group-id="CodeMenu" anchor="last"/>
    </action>
  </actions>

注意

src下创办好的Action类会暗中同意世袭 AnAction,然后完成 actionPerformed 方法,
大家仿造官方文书档案中的例子,在措施中增加如下代码,让点击那一个Action的时候弹出二个输入框

public class DatabaseGeneratorAction extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent e) {
        Project project = e.getData(PlatformDataKeys.PROJECT);
        String txt = Messages.showInputDialog(project,
                "What is your name?",
                "Input your name",
                Messages.getQuestionIcon());
        Messages.showMessageDialog(project,
                "Hello, " + txt + "!n I am glad to see you.", 
                "Information",
                Messages.getInformationIcon());
    }
}

写好代码后,run运维品种~
那儿会活动运维三个新的英特尔liJ IDEA项目,那个新品类里就能够包蕴咱们刚编写的插件选项了

要是想调节和测量检验Android代码,能够先在AMDliJ中的Project Structure里配置好Android情状,然后run插件项目运维新的AMDliJ时建二个Android Project就好了

国民党的新生活运动行起来的IDE中就能够看来菜单栏里的 Code 最尾巴部分就应际而生了一个Database Generator选项

bifa365.com 9

plugin

点击就能够触发大家编辑的功力

bifa365.com 10

plugin run

bifa365.com 11

plugin run

借使您以为您的插件不好找,也能够自动在根目录上新建三个和Code、Edit等同级的group,须求在配置文件里新建二个group,然后<add-to-group>钦点其加多到MainMenu主菜单上

<actions>
   <!-- Add your actions here -->
   <group id="BoredreamPlugin.PluginSet" text="BdPlugin" description="the plugin set by boredream">
      <add-to-group group-id="MainMenu" anchor="last"  />
      <action id="DatabaseGenerator.GenAction" class="DatabaseGenerateAction" text="Database Generator" description="A test menu item" />
   </group>
</actions>

其不日常候再run插件就能够开掘它独自创设了三个group

bifa365.com 12

group

可是要慎用~ 究竟每种插件都加叁个group那主菜单栏就乱死了,不像藏在二级菜单里会低调的多

依靠那个观念,能够杜撰以下解决方案:

五、打包

(这里我们先把全副工艺流程介绍完,更眼花缭乱的插件开采会下黄金年代篇介绍)
比较轻松,直接在最上端主菜单栏中甄选 Build | Prepare Plugin Module XXX For Deployment即可
包裹前要留意把 plugin.xml 配置文件中的相关消息填写完整

bifa365.com 13

group

当提示达成后,会在品种根目录下生成叁个 XXX.jar 的包

bifa365.com 14

jar

犹如于安卓打包临盆的apk,那个时候你就足以把它丢给外人利用了

我们看看插件的布署:

六、发布

而是安卓的apk公布,日常会有叁个运用商场比如Google Play,应用宝啥的
IntelliJ的插件也可能有叁个市情,是合法提供的,能够在阳台上揭破自个儿的插件
地址:https://plugins.jetbrains.com/

bifa365.com 15

publish plugin

张开插件中央,注册好账号,然后选拔Upload Plugin
将你转移的插件jar包上传,然后选拔分类,最终认可达成上传

此刻固然完毕上传,但是最棒要完善一下Plugin Detail消息,方便人家对您的插件有更详细的刺探
还要再安装一下插件的支撑IDE范围,不然别人或许在Android Studio插件Curry搜不到你的plugin!!!

英特尔liJ开采的插件是目的性全体IntelliJ旗下产物的,而他们中间的插件库商场是非相同的
故此公布插件的时候必要求钦赐你的插件是这一个IDE能够运用的,比方要帮忙AndroidStudio
宏观Plugin Detail新闻的时候,会有一个抉择 Supported products 即援助成品范围
默认是 勾选了“使用插件中的配置里钦赐的制品范围”
这种使用插件项目里的配置情势,供给您在plugin.xml中增加<depends>标签表明,相比较费心
<depends>用法参谋 http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html

只是你也能够撤废勾选,直接在上传大旨这里设置付加物范围,推荐这种格局~
AMDliJ的俩是暗中同意的,然后大家再勾选Android Studio,最终save保存更新

bifa365.com 16

Paste_Image.png

bifa365.com 17<configuration>
bifa365.com 18  <Assemblies>
bifa365.com 19    <PluginAssembly AssemblyName="TestXML.exe" AssemblyPath="D:DownloadsAssemblyLoaderTestXMLbinDebug">
bifa365.com 20      <Formats>
bifa365.com 21        <FormatAdapter TypeName="TestXML.Program" RouterTypeName="GetData" />
bifa365.com 22        <FormatAdapter TypeName="TestXML.Program" RouterTypeName="GetName" />
bifa365.com 23      </Formats>
bifa365.com 24    </PluginAssembly>
bifa365.com 25    <PluginAssembly AssemblyName="LibTest.dll" AssemblyPath="D:DownloadsAssemblyLoader那么你将无法使用默认的Appdomain实现此任务,为自动生成数据库代码的插件添加UI。LibTestbinDebug">
bifa365.com 26      <Formats>
bifa365.com 27        <FormatAdapter TypeName="LibTest.Class1" RouterTypeName="GetData" />
bifa365.com 28        <FormatAdapter TypeName="LibTest.Class1" RouterTypeName="GetData" />
bifa365.com 29      </Formats>
bifa365.com 30    </PluginAssembly>
bifa365.com 31  </Assemblies>
bifa365.com 32</configuration>

七、安装使用

开荒你常用的Android Studio开端安装使用这一个插件吧,方式有二种

  1. 从插件中央直接下载安装
    IDE中选择 File | Settings | Plugins ,弹出对话框中选 Browse respositories 浏览插件库
    寻觅你和睦公布的插件,然后安装~ 安装到位后重启Android Studio就可以开首使用插件了

  2. 从地点安装插件jar包
    这种须求利用插件项目退换的jar包,
    筛选Browse respositories选项旁边的 Install plugin from disk,然后找到jar文件选中OK就可以

bifa365.com 33

Install Plugin

瞩目,新公布到市场的插件恐怕权且搜不到,有延迟~

好了,介绍结束~

位置的安顿文件是插件的计划:(当然可以开展扩充)

始于编写制定你的首先个插件吧!!!

三回九转教程还大概会带着我们一齐付出三个实际的实用插件,敬请期望~


终极安利下团结的插件,自动构造文件的连锁代码,懒人必备!还不用引进第三方的注入框架!
https://github.com/boredream/BorePlugin
欢迎star和follow

bifa365.com 34

Layout Creator

下边简介下安插的差不离意思:

PluginAssembly节点表示三个插件:

AssemblyName:插件的称谓(也等于.exe或.dll)

AssemblyPath:插件配置的渠道(AssemblyName所在文书的路线)

Formats:供给在AssemblyName文件中调用的音信

TypeName:指的是AssemblyName的类型定义。

RouterTypeName:指TypeName中方法的定义。

不无方面包车型大巴安顿文件就意味着应用程序实施的逐条是那样的:

1.(TextXML.exe)TextXML.Program类中的GetData方法.

2.(TextXML.exe)TextXML.Program类中的GetName方法

3.(LibTest.dll卡塔尔LibText.Class1类中的GetData方法(因陈设同样,所以这么些点子将调用两遍卡塔尔(英语:State of Qatar)

 

 Charles Chen