`
liugang594
  • 浏览: 985533 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Eclipse运行(launcher)框架一

阅读更多

基础

 

首先我们需要明白两个概念:

 

  1. LaunchConfigurationType

字面上解就是一种运行类型。比如说java类型、Ant类型或者是C++类型。不同的类型就不同的运行方式。

  1. LaunchConfiguration

具体的某个要运行的对象的一个配置。比如说一个java类要运行就得知道类路劲、信赖库、Main类等;一个Eclipse插件要运行,就得配置有插件领事信息等等;或者是一个Ant文件,需要知道运行哪个Tast等。这些都是存在这个LaunchConfiguration里。

看下图就很好理解了:

 

tu1

图一

上图中,红色部分就是一个一个的LaunchConfigurationType,蓝色部分就是对应于某个LaunchConfigurationType的一个个的LaunchConfiguration。每一个LaunchConfiguration都会有几个Tab在右边,用来填写这些配置信息的。


每一个LaunchConfiguration都需要实现接口:org.eclipse.debug.core.ILaunchConfiguration。这个ILaunchConfiguration是一个“只读”的类。它本身不能够被修改。所以如果你想修改,你就必须引用到一个实现了org.eclipse.debug.core.ILaunchConfigurationWorkingCopy接口的对象,这个接口也实现了ILaunchConfiguration接口,但增加了一些用以修改config内容的方法。Config的内容通常是一个个的name/value对,这些name/value对被称为”attribute”。每个”attribute”的值只能是以下五种类型之一:

·    boolean

·    int

·    java.lang.String

·    java.util.List (all elements must be of type java.lang.String)

·    java.util.Map (all keys & values must be of type java.lang.String)

UI与非-UI的分离


Eclipse推荐把插件的UI部分与非-UI部分分离。我们可以看到所有自带的运行器都是UI分离的。所以我们实现的时候也应该这样做。

如果实现的是UI部分插件,你需要导入:org.eclipse.debug.ui

如果实现的是非-UI部分的插件,你需要导入:org.eclipse.debug.core


具体实现

下面我们就来做一个具体的实现。按照上面的说法,首先我们得有一个ConfigurationType。这是通过扩展实现的,所以我们需要定义一个扩展点实现:org.eclipse.debug.core.launchConfigurationTypes。这里我定义了一个如下:

   <extension

         point="org.eclipse.debug.core.launchConfigurationTypes">

      <launchConfigurationType

            delegate="com.tibco.cdc.liugang.launcher.delegate.LiugangLaunchConfigurationType"

            delegateDescription="This is for test"

            delegateName="Launcher Test"

            id="com.tibco.cdc.liugang.launcher.type"

            modes="run,debug"

            name="LiugangLauncher">

      </launchConfigurationType>

   </extension>


还有几项没有设置,可以先不管。这里把关键的几项指出:


1. delegate:这是最关键的。当我们选择了某个configuration后,点运行,调用的就是这个delegate实现类的launch方法。所以我们需要在launch方法里实现我们的运行方式。

2.  name:就是LaunchConfigurationType显示的名字,如上面的Eclipse Applicationjava Application等待。

3.  modes:运行模型。Eclipse好像已经默认实现了三种模型:rundebugprofile。一般如果只是运行就填run,要调试就填debug等等。


这样我们就定义了一个configurationType了。我们看一下运行效果:

tu2

图二

我们扩展的configurationType已经出来了。


如果我们提供了rundebug模型,那么我们在实现中就是分两种情况运行分别处理了。这个判断也就看launch方法中的mode参数。比较的时候不应该接直用String,还应该使用常量:org.eclipse.debug.core.ILaunchManager


下面我们再看一个delegatelaunch方法:

launch(ILaunchConfiguration configuration, String mode,

                  ILaunch launch, IProgressMonitor monitor)


       configuration一个具体的configuration,存储了要运行对象的配置信息。也可以在这个方法里做运行前的最后修改

       mode上面提到的,如rundebug

       launch:代表的就是一个运行。我们launch方法的职责就是把最终生成的target或者processes给加到launch对象上去。


实际上,Launch方法的最主要的职责就是两个:

1.    Construct a command line and pass it to Runtime.exec()

2.    Create debug targets/processes and add these to the ILaunch object

添加一个图标

上面运行结果中,我们的type前里没有图标。要增加一个图标也需要进行扩展。因为我们强调了UI分离的概念。所以一般来说需要再写一个UI插件,专门去存放UI相关的东西。具体的就不说了。

这里要扩展的扩展点是:org.eclipse.debug.ui.launchConfigurationTypeImages

记住要导入必要的插件。如下实现:

   <extension

         point="org.eclipse.debug.ui.launchConfigurationTypeImages">

      <launchConfigurationTypeImage

            configTypeID="com.tibco.cdc.liugang.launcher.type"

            icon="icons/sample.gif"

            id="com.tibco.cdc.liugang.launcher.ui.type.icon">

      </launchConfigurationTypeImage>

   </extension>

 

基本不用讲了,icon就是要显示的图标的路径;configTypeID就是这个图标要显示的对应的configType,就是上面我们扩展的那个typeID。运行结果如下:

tu3

图三

看我们的图标已经加上了。

分享到:
评论
1 楼 imu2008 2014-05-08  
此文是对的~写的可以~点32个赞

相关推荐

    可以直接在eclipse上运行Launcher4.4源码

    【标题】"直接在Eclipse...总的来说,直接在Eclipse上运行Launcher4.4源码是一个深度学习Android系统和提升开发技能的好方法,可以帮助开发者深入理解Android系统的底层运作,为今后的Android开发工作打下坚实的基础。

    能在eclipse上直接编译的Launcher3

    原生的Launcher3源码通常用Java和C++编写,包含了Android框架层(frameworks)的一部分,涉及到ActivityManagerService、Intent、BroadcastReceiver等多个Android组件和服务。编译Launcher3不仅需要Android SDK,还...

    安卓Launcher桌面相关-使用eclipse开发工具自己写的一个桌面小控件.rar

    这个项目虽然可能无法保证每个组件都能正常运行,但它提供了一个基础框架,可以帮助初学者了解 Android Launcher 的开发流程。通过参考学习和实践,你可以逐步完善自己的 Launcher 功能,打造个性化的桌面体验。

    launcher2导入eclipse不报错

    本文档将指导你如何正确地在Eclipse中导入`launcher2`工程,并解决可能出现的100多个错误。 首先,当你尝试在Eclipse中导入`launcher2`工程时,Eclipse可能会报告大量的错误,这主要是因为项目依赖于一些外部的库...

    eclipse指定启动的虚拟机配置说明

    - `-framework`: 指定 Eclipse 使用的框架路径。例如: ``` -framework plugins\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar ``` - `-vmargs`: 此行之后的所有参数将传递给 JVM。常见的参数包括: - `-...

    Launcher依赖的jar包

    在Android开发中,`Launcher`是一个至关重要的组件,它是用户与设备交互的入口,负责显示应用图标、桌面小部件以及管理手机的主屏幕。在Android 4.4(KitKat)版本中,`Launcher`的实现更加复杂和优化,以提供更好的...

    精通eclipse开发jsp

    5. **Sysdeo Eclipse Tomcat Launcher plugin**:这是一个Eclipse插件,允许用户直接在Eclipse内启动和管理Tomcat服务器,简化了开发过程中的部署步骤。 6. **Eclipse版本与JDT**:Eclipse 3.1版本是针对该教程的...

    eclipse开发

    3. **Sysdeo Eclipse Tomcat Launcher 3.1beta** - 这是一个Eclipse插件,允许用户直接在Eclipse内管理和运行Tomcat服务器。下载并解压tomcatPluginV31beta.zip,然后将其内容复制到Eclipse的安装目录下。 4. **...

    Spark源代码在Eclipse中的部署、编译、运行.doc

    Apache Spark是一个流行的开源大数据处理框架,它提供了快速、通用和可扩展的数据处理能力。而Eclipse是一款广泛使用的Java集成开发环境(IDE),非常适合进行Spark源代码的开发和调试。 首先,我们需要进行必要的...

    Android 调试运行launcher源码(四)——修改所有类中的错.doc

    在Android开发过程中,调试和运行第三方源码,如Launcher,是一项挑战性的工作。这篇文档主要讲述了如何在Windows下的Eclipse环境中修正Android Launcher源码中的错误。以下是对文档中提到的知识点的详细说明: 1. ...

    Eclipse 安装配置总结.doc

    - 运行`F:\eclipse\eclipse.exe`启动Eclipse。 #### 二、非侵入式插件安装方法(Links安装法) - **侵入式安装**: - 将插件中的`features`和`plugins`目录直接复制到Eclipse安装目录下的同名目录中。 - 缺点:...

    Eclipse开发struts完全指南

    【Eclipse开发Struts完全指南】是一份详细的文档,旨在帮助开发者使用Eclipse IDE进行Struts框架的应用开发。以下是对该指南中涉及的关键知识点的详细解释: ### 1. 安装程序准备 #### JDK 5.0 JDK (Java ...

    Eclipse使用入门教程

    - Sysdeo Tomcat Launcher Plugin是一个用于在Eclipse中启动Tomcat的插件。 - 下载地址:[http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV33.zip]...

    eclipse

    1. **工作台(Workbench)**: Eclipse 的工作台是用户交互的主要界面,它由多个视图(Views)和编辑器(Editors)组成,提供了一个统一的工作环境。用户可以在这里编写、运行和调试代码。 2. **项目探索器(Project...

    eclipse资源包

    4. `launcher`:这可能指的是Eclipse的启动器模块,负责初始化Eclipse环境,加载工作台(Workbench)和运行时环境。这个部分的源码对于理解Eclipse如何启动和管理进程非常重要。 5. `java`:这个目录可能包含了Java...

    Eclipse 插件下载专区lousingvu专用通道

    4. `org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519`:这是一个Eclipse Equinox启动器的Windows 32位版本,用于启动Eclipse IDE,处理不同平台下的依赖和配置问题。 5. `org.eclipse.epp.package...

    android 4.4 源码 eclipse 浏览

    1. **Android运行时(Android Runtime, ART)**:在Android 4.4中,ART取代了Dalvik虚拟机,提供了预编译优化,提高了性能。查看`dalvik`和`art`目录下的代码,了解类加载、垃圾回收和执行机制。 2. **框架服务...

Global site tag (gtag.js) - Google Analytics