Eclipse ndk fix插件开发
一. 手工修复ndk环境bug
Eclipse做ndk开发的时候, 经常会遇到编译过去,却报语法错误的问题,比如
①. 头文件不识别
②. 头文件识别了, 类型不识别
针对这一的bug,我们一般按照如下方式可以进行修复
1. 在eclipse中关闭指定Project
mac下显示所有文件
显示:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏:defaults write com.apple.finder AppleShowAllFiles -bool false
killall Finder (注意首字母大写)
2. 删除相关文件
用其他编辑工具打开该project的.project文件,删除以下内容:
①.删掉org.eclipse.cdt.managedbuilder.core.genmakebuilder开头的
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
........
</arguments>
</buildCommand>
②. 搜索org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
③. 删掉如下4项
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
④. 删除.cproject文件
3. 在eclipse里打开原来的project, refresh(选中工程F5),然后右键->properties->Android Tools -> Add Native Support
这一问题就可以解决了, 那么我们下面开始编写插件, 将这个过程自动化
二. 插件开发
1. 创建菜单工程
新建plugin工程, 工程类型选择popup menu, 当然你可能需要如下的一些资料
a. 如何创建插件菜单工程 (初级)
http://blog.csdn.net/wangwei_cq/article/details/7736394
b. Eclipse创建多级菜单 (中级)
http://blog.csdn.net/jdzms23/article/details/7276238
c.Eclipse插件菜单深入理解(高级)
http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-menuext/
把objectclass修改成org.eclipse.core.resources.IResource(指代工程关闭之后能看到右键菜单)
org.eclipse.jdt.core.IJavaElement则是java工程项目能看到我们的右键菜单

在dependencies中, 添加相关的包支持, 不然会报错误

恩,该配置的都差不多了,coding...
2. coding
懒得贴代码了,上传github,有兴趣的可以看看
我把打包的工程也一并上传了
插件是org.bingghost.ndkfix
传送门:
https://github.com/bingghost/ndkfix
3. 生成插件安装包
详细安装说明请看我的这篇笔记:
http://www.cnblogs.com/bingghost/p/6114290.html
三. 插件使用
1. 关闭ndk工程
选中指定的ndk工程, 右键, close project
2. 右键->ndk fix->start fix

3. Open Project
4. Refresh Project(快捷键F5)
5. android tools-> add native support
四. 遇到的问题
本来打算把这个插件功能做成全自动化, 我的思路是这样的
自动关闭选中project->ndk配置文件修复->open project->刷新project->add native support
当然是有方法的,但是最后我没有成功(第一步就卡住了), 下面说下我的思路
1. 我们是可以调用Eclipse原有的功能的,通过下面的操作我们查看Eclipse菜单的相关类
按下alt + shift + f2,对着项目鼠标右键,选择close project,弹出如下说明

那么我们就可以用CloseResourceAction来关闭, 我编写了如下代码,
但是并没有执行成功, 我猜测Shell获取的不对, 我网上找了半天的资料也没有找到(放弃了)
// close select project
IShellProvider provider = new IShellProvider() {
@Override
public Shell getShell() {
return Workbench.getInstance().getActiveWorkbenchWindow().getShell();
}
};
CloseResourceAction closeAction = new CloseResourceAction(provider);
closeAction.run();
关于刷新的,我找到一些资料如下
http://www.programcreek.com/java-api-examples/index.php?api=org.eclipse.ui.actions.RefreshAction
当然喜欢折腾的同学,可以把这个插件继续完善, 我懒得折腾了
Eclipse ndk fix插件开发的更多相关文章
- WINDOWS系统Eclipse+NDK+Android + OpenCv
WINDOWS系统Eclipse+NDK+Android + OpenCv 参考文档博客 1 NDK环境搭建 http://jingyan.baidu.com/article/5d6edee22d90 ...
- Eclipse NDK 配置,无需安装Cygwin
Eclipse NDK 配置,不用安装Cygwin 文章转自http://www.cnblogs.com/chenjiajin/archive/2012/04/12/2444188.html 一.关于 ...
- 追索权 Eclipse + NDK error: stray '\24' in program
[size=16px][b][color=#FF0000]追索权 Eclipse + NDK error: stray '\24' in program[/color][b][/b][/b][/si ...
- Eclipse + ndk+ cocos2dx 调试Cocos2dx 程序
本文是我自己尝试通过eclipse来在windows平台下搭建cocos2dx的过程,期间遇到了一些问题,都是通过网上借鉴别人的博文来解决的,下面也列出来这些参考文献.写下来的目的主要是自己以后要用的 ...
- Eclipse NDK 配置
一.关于NDK:NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java ...
- NDK(2)使用eclipse + ndk开发过程演示,含CPU架构编译
环境linux + eclipse + adt + ndk 1,在ide中配置ndk 下载ndk,在eclipse中配置 2,使用ndk编程 2.1 给项目添加ndk 支持 右键 项目名 --> ...
- 用 eclipse ndk 编译 cocos2d-x for Android
Android 环境搭建不详述,,可以google,,, 我用的coco2dx 是 2.14 ,2.14 用 create_project.py 脚本创建工程,Python环境配置也是很简单,这里了不 ...
- Eclipse NDK 配置,不用安装Cygwin
一.关于NDK:NDK全称:Native Development Kit.1.NDK是一系列工具的集合.NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用 ...
- cocos2d-x eclipse + NDK 自动编译配置
文章来自:http://www.cocos2dres.com/view.asp?id=90 1. 准备工作: android NDK r8版本 ADT Bundle 下载地址:http://de ...
随机推荐
- git 分支管理
本地主分支提交到远程分支 git push origin master:branch-test 本地分支提交到远程主分支 git push origin branch-test:master 切换分支 ...
- AngularJS指令
1. AngularJS指令的特点: AngularJS通过被称为指令的新属性来扩展HTML,指令的前缀为ng-. AngularJS通过内置的指令来为应用添加功能. AngularJS允许你自定义指 ...
- java利用JDK调用并执行js源码
前言: 不同开发语言之间具有通用性,更具有协作调用的可能.有时候对于一些场景会有调用js的需求,因此下面展示了一个java利用自身JDK调用js函数的demo,供感兴趣的朋友参考. js函数文件 ex ...
- wordpress默认index主页选择Your Projects提示无法找到项目解决办法?
wordpress_4.5.3默认index主页选择Your Projects下部署的项目发现报错无法找到目标解决办法: 1.其实细心的小伙伴已经发现问题出在哪里,跳转后链接地址发生了错误没有加loc ...
- mysql更新密码
mysql -u root mysql> use mysql; mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE us ...
- 很不错的Intent用法 适用于正在开发的伙伴。自己看到了,也分享给大家吧。
本文介绍Android中Intent的各种常见作用. 1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的开 ...
- Servlet学习:实现分页效果的方法
分页的算法:需要定义四个变量,它们有各自的用处int pageSize:每页显示多少条记录int pageNow:希望显示第几页int pageCount:一共有多少页int rowCount:一共有 ...
- BZOJ 2001: [Hnoi2010]City 城市建设
2001: [Hnoi2010]City 城市建设 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1132 Solved: 555[Submit][ ...
- 自己写的服务出现"服务没有及时响应启动或控制请求 1053" 错误
自己写了一个服务,安装到电脑上后 启动时发现报"服务没有及时响应启动或控制请求 1053" 这个错误 在网上找了一些方法,都没有解决 后来,看了下,原来有个写文件的方法读取文件没有 ...
- 在Python中使用可变长参数列表
函数定义 在函数定义中使用*args和**kwargs传递可变长参数. *args用作传递非命名键值可变长参数列表(位置参数); **kwargs用作传递键值可变长参数列表 函数调用 在调用函数时,使 ...