基础
首先我们需要明白两个概念:
- LaunchConfigurationType
字面上解就是一种运行类型。比如说java类型、Ant类型或者是C++类型。不同的类型就不同的运行方式。
- LaunchConfiguration
具体的某个要运行的对象的一个配置。比如说一个java类要运行就得知道类路劲、信赖库、Main类等;一个Eclipse插件要运行,就得配置有插件领事信息等等;或者是一个Ant文件,需要知道运行哪个Tast等。这些都是存在这个LaunchConfiguration里。
看下图就很好理解了:
图一
上图中,红色部分就是一个一个的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 Application,java Application等待。
3. modes:运行模型。Eclipse好像已经默认实现了三种模型:run、debug、profile。一般如果只是运行就填run,要调试就填debug等等。
这样我们就定义了一个configurationType了。我们看一下运行效果:
图二
我们扩展的configurationType已经出来了。
如果我们提供了run和debug模型,那么我们在实现中就是分两种情况运行分别处理了。这个判断也就看launch方法中的mode参数。比较的时候不应该接直用String,还应该使用常量:org.eclipse.debug.core.ILaunchManager
下面我们再看一个delegate的launch方法:
launch(ILaunchConfiguration configuration, String mode,
ILaunch launch, IProgressMonitor monitor)
configuration:一个具体的configuration,存储了要运行对象的配置信息。也可以在这个方法里做运行前的最后修改
mode:上面提到的,如run,debug。
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,就是上面我们扩展的那个type的ID。运行结果如下:
图三
看我们的图标已经加上了。
相关推荐
【标题】"直接在Eclipse...总的来说,直接在Eclipse上运行Launcher4.4源码是一个深度学习Android系统和提升开发技能的好方法,可以帮助开发者深入理解Android系统的底层运作,为今后的Android开发工作打下坚实的基础。
原生的Launcher3源码通常用Java和C++编写,包含了Android框架层(frameworks)的一部分,涉及到ActivityManagerService、Intent、BroadcastReceiver等多个Android组件和服务。编译Launcher3不仅需要Android SDK,还...
这个项目虽然可能无法保证每个组件都能正常运行,但它提供了一个基础框架,可以帮助初学者了解 Android Launcher 的开发流程。通过参考学习和实践,你可以逐步完善自己的 Launcher 功能,打造个性化的桌面体验。
在Android开发中,`Launcher`是一个至关重要的组件,它是用户与设备交互的入口,负责显示应用图标、桌面小部件以及管理手机的主屏幕。在Android 4.4(KitKat)版本中,`Launcher`的实现更加复杂和优化,以提供更好的...
本文档将指导你如何正确地在Eclipse中导入`launcher2`工程,并解决可能出现的100多个错误。 首先,当你尝试在Eclipse中导入`launcher2`工程时,Eclipse可能会报告大量的错误,这主要是因为项目依赖于一些外部的库...
- `-framework`: 指定 Eclipse 使用的框架路径。例如: ``` -framework plugins\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar ``` - `-vmargs`: 此行之后的所有参数将传递给 JVM。常见的参数包括: - `-...
5. **Sysdeo Eclipse Tomcat Launcher plugin**:这是一个Eclipse插件,允许用户直接在Eclipse内启动和管理Tomcat服务器,简化了开发过程中的部署步骤。 6. **Eclipse版本与JDT**:Eclipse 3.1版本是针对该教程的...
3. **Sysdeo Eclipse Tomcat Launcher 3.1beta** - 这是一个Eclipse插件,允许用户直接在Eclipse内管理和运行Tomcat服务器。下载并解压tomcatPluginV31beta.zip,然后将其内容复制到Eclipse的安装目录下。 4. **...
Apache Spark是一个流行的开源大数据处理框架,它提供了快速、通用和可扩展的数据处理能力。而Eclipse是一款广泛使用的Java集成开发环境(IDE),非常适合进行Spark源代码的开发和调试。 首先,我们需要进行必要的...
在Android开发过程中,调试和运行第三方源码,如Launcher,是一项挑战性的工作。这篇文档主要讲述了如何在Windows下的Eclipse环境中修正Android Launcher源码中的错误。以下是对文档中提到的知识点的详细说明: 1. ...
- 运行`F:\eclipse\eclipse.exe`启动Eclipse。 #### 二、非侵入式插件安装方法(Links安装法) - **侵入式安装**: - 将插件中的`features`和`plugins`目录直接复制到Eclipse安装目录下的同名目录中。 - 缺点:...
【Eclipse开发Struts完全指南】是一份详细的文档,旨在帮助开发者使用Eclipse IDE进行Struts框架的应用开发。以下是对该指南中涉及的关键知识点的详细解释: ### 1. 安装程序准备 #### JDK 5.0 JDK (Java ...
- Sysdeo Tomcat Launcher Plugin是一个用于在Eclipse中启动Tomcat的插件。 - 下载地址:[http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV33.zip]...
1. **工作台(Workbench)**: Eclipse 的工作台是用户交互的主要界面,它由多个视图(Views)和编辑器(Editors)组成,提供了一个统一的工作环境。用户可以在这里编写、运行和调试代码。 2. **项目探索器(Project...
4. `launcher`:这可能指的是Eclipse的启动器模块,负责初始化Eclipse环境,加载工作台(Workbench)和运行时环境。这个部分的源码对于理解Eclipse如何启动和管理进程非常重要。 5. `java`:这个目录可能包含了Java...
5. **安装GEF (Graphical Editing Framework)**:GEF是一个用于构建图形编辑器的框架,下载并安装`GEF-ALL-3.1.zip`,有助于在Eclipse中创建图形界面。 6. **安装Eclipse HTML Editor**:这个插件提供了一个增强的...
4. `org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519`:这是一个Eclipse Equinox启动器的Windows 32位版本,用于启动Eclipse IDE,处理不同平台下的依赖和配置问题。 5. `org.eclipse.epp.package...
1. **Android运行时(Android Runtime, ART)**:在Android 4.4中,ART取代了Dalvik虚拟机,提供了预编译优化,提高了性能。查看`dalvik`和`art`目录下的代码,了解类加载、垃圾回收和执行机制。 2. **框架服务...