我为 android studio 创建插件,但我得到了

Posted

技术标签:

【中文标题】我为 android studio 创建插件,但我得到了【英文标题】:i create plugin for android studio but i get 【发布时间】:2017-12-14 04:15:04 【问题描述】:

该插件在工具菜单中或菜单中的任何位置仅包含一个操作,但我总是得到 空值 java.lang.NullPointerException 即使是空的动作 android studio 2.3.3 空项目 intellij idea 2017.1.5 我尝试了 Community 和 Ultimate 两个版本

null java.lang.NullPointerException at com.intellij.ide.SystemHealthMonitor.getActionName(SystemHealthMonitor.java:542) 在 com.intellij.ide.SystemHealthMonitor.countActionInvocation(SystemHealthMonitor.java:479) 在 com.intellij.openapi.actionSystem.impl.ActionManagerImpl.fireBeforeActionPerformed(ActionManagerImpl.java:1190) 在 com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$2(ActionMenuItem.java:292) 在 com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:905) 在 com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:124) 在 com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:284) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 在 com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:112) 在 com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88) 在 com.intellij.openapi.application.TransactionGuardImpl.access$300(TransactionGuardImpl.java:40) 在 com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:113) 在 com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:123) 在 com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:109) 在 com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:112) 在 com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:513) 在 com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:45) 在 com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:533) 在 java.awt.Component.processMouseEvent(Component.java:6533) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 在 java.awt.Component.processEvent(Component.java:6298) 在 java.awt.Container.processEvent(Container.java:2236) 在 java.awt.Component.dispatchEventImpl(Component.java:4889) 在 java.awt.Container.dispatchEventImpl(Container.java:2294) 在 java.awt.Component.dispatchEvent(Component.java:4711) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 在 java.awt.Container.dispatchEventImpl(Container.java:2280) 在 java.awt.Window.dispatchEventImpl(Window.java:2746) 在 java.awt.Component.dispatchEvent(Component.java:4711) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 在 java.awt.EventQueue.access$500(EventQueue.java:97) 在 java.awt.EventQueue$3.run(EventQueue.java:709) 在 java.awt.EventQueue$3.run(EventQueue.java:703) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) 在 java.awt.EventQueue$4.run(EventQueue.java:731) 在 java.awt.EventQueue$4.run(EventQueue.java:729) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 在 com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:795) 在 com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:627) 在 com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:387) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

【问题讨论】:

欢迎来到 Stack Overflow!请带上tour,看看周围,通读help center,尤其是How do I ask a good question?和What topics can I ask about here?。 【参考方案1】:

我在这里发现了同样的问题:intellij idea create plugin can not use on android studio

用户 Meo 指出你要使用包

【讨论】:

非常感谢,我损失了 2 天,因为在我发布了我在相关部分找到的问题之后打包 ^^ 并且它有效 ^^ 我可以使用 android studio 在我调试代码时运行我的插件intellij 的想法 @aymenopa 我从未尝试过,所以我无法回答。有什么理由不想使用 IDEA 进行调试? @cnjash bc 该插件专用于 android studio,我只有 4GB 的内存,我无法使用 google chrome 打开 3 个程序以获取文档,只是浪费了我的时间关闭 intellij 并等待 android studio 建立索引文件,我删除旧版本的插件并重新启动 android studio 并等待 android studio 再次索引文件以安装较新版本 @aymenopa 很遗憾,我在这里帮不了你。如果您继续遇到问题,您可能需要发布一个单独的问题。【参考方案2】:

我将动作类移动到包中并且它起作用了

不工作:

<action id="myid" class="MyAction" text="My text"/>

工作:

<action id="myid" class="action.MyAction" text="My text"/>

【讨论】:

【参考方案3】:

谢谢大家,这真是个愚蠢的问题...... 只需要创建包 - 操作 并将类放入该包中...

另外,Kotlin DSL 也有问题,用了 groovy 就行了!

为我工作!

【讨论】:

以上是关于我为 android studio 创建插件,但我得到了的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio自定义加固插件

Visual Studio第三方插件创建

Android Studio 插件开发7创建模板代码代码篇

Android Studio 插件开发7创建模板代码效果篇

Android Studio 插件开发1创建标题 通知等

Android Studio快速创建常用工具类的插件Utils