转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540

本文出自【赵彦军的博客】

在前面我介绍了插件开发的基本流程

【Android Studio 插件开发详解一:入门练手】

【Android Studio 插件开发详解二:工具类】

【Android Studio 插件开发详解三:翻译插件实战】

在经历的前面的3篇文章,我相信大家都可以掌握Android 插件工具的开发了,开发完插件以后,我们需要将插件上传至插件市场,然后别人就可以通过插件市场安装我们的插件了。在我做插件上传至市场的过程中,遇到了很多坑,今天就来梳理一下,把遇到的坑都填平。

插件打包

比较简单,直接在顶部主菜单栏中选择 Build | Prepare Plugin Module XXX For Deployment 即可。

将打好的 xxx.jar 包上传至市场 https://plugins.jetbrains.com/ , 上传的具体细节比较简单,这里省略。上传成功后,需要2个工作日来审核,2天内就能收到 jetbrains 官方发来的邮件,告诉你审核结果。

在插件的开发项目中,有一个很重要的文件 plugin.xml

这个文件很重要,里面有很多细节需要注意,一不小心,就可能上传不成功,或者审核不通过。

坑一 (id不能重复)

plugin.xml 里面有个id 是这个插件的唯一标识,其相当于Android里面的包名,唯一存在,不能重复。如果跟市场上的插件有重复,上传的时候将会报错,如下图所示:

坑二(插件描述信息要完整)

不就后我就收到一封邮件,如下:

意思就是审核不通过,原因是在 plugin描述中添加英文描述,并且移除标准的默认文字。那么 plugin 的描述在哪里设置呢,其实也很简单,就是 plugin.xml 文件。

那么为什么会审核不通过呢,我原来的是这样写的

 <id>com.zhaoyanjun.AndroidTranslate</id>
<name>AndroidTranslate</name>
<version>1.0.0</version>
<vendor email="362299465.com" url="http://blog.csdn.net/zhaoyanjun6.com">赵彦军博客</vendor> <description><![CDATA[
Android资源中英文翻译<br>
Android资源英文异步翻译<br>
<em>most HTML tags may be used</em>
]]></description> <change-notes><![CDATA[
Android 资源翻译 .<br>
<em>most HTML tags may be used</em>
]]>
</change-notes>

这里需要注意两个问题

1、description 标签里面不能只写中文,也要写英文。为了简单,我们直接写英文好了,中文就不写了。

2、description 、change-notes 标签里面不能有 <em>most HTML tags may be used</em> 这样的默认文字,应该把默认文字删掉。

3、description 标签是这个插件的功能描述。change-notes 标签是这个插件的版本更新的一个日志记录,我的写的不规范。

经过修改,我改成这样

 <description><![CDATA[
resource translation for Android Studio
<li>1. Choose the word you want translate.</li>
<li>2. Press Command + Q.</li>
]]></description> <change-notes><![CDATA[
<li>1.2 : New: fix some bugs.</li>
<li>1.1 : Fixed: Long click bug.</li>
<li>1.0 : init </li>
]]>
</change-notes>

坑三(插件支持的产品要说明)

经过前面两个坑,我的插件终于审核通过了,可以在 Android Studio 市场没有搜到。只能在 IntelliJ IDEA 产品中搜到。

还记得plugin.xml中注释的那段代码么:

  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
on how to target different products -->
<!-- uncomment to enable plugin in all products
<depends>com.intellij.modules.lang</depends>
-->

这是指定你的插件发布到jetbrains plugins仓库的产品类型,jetbrains公司有很多种产品,并且都支持插件开发,如Intellij Idea, PyCharm,WebStorm, Android Studio等等,如果你上面那段代码注释了,那么你在上面网站上传的时候会默认上传到Intellij Idea的产品仓库,到时候只能在 Intellij Idea 的仓库中搜到你的插件,Android Studio 是没有的。如果你想在 Android Studio 的插件市场搜到你的插件,你需要将上面的注释去掉。

修改完后,我的 plugin.xml 中是这样的

  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
on how to target different products -->
<!-- uncomment to enable plugin in all products--> <depends>com.intellij.modules.lang</depends>

总结

在发布的时候,大概会遇到上面3个坑,把这些坑填平后,再次打包插件,更新到市场上。你可以看到这个插件支持的产品列表,如下图

可以看到我们发布的插件已经支持 Android Studio 了。

本系列文章的源码都上传至 : https://github.com/zyj1609wz/AndroidPluginTranslate


个人微信号:zhaoyanjun125 , 欢迎关注

Android Studio 插件开发详解四:填坑的更多相关文章

  1. Android Studio 插件开发详解一:入门练手

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112003 本文出自[赵彦军的博客] 一:概述 相信大家在使用Android S ...

  2. Android Studio 插件开发详解三:翻译插件实战

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自[赵彦军的博客] 一:概述 如果不了解插件开发基础的同学可以 ...

  3. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  4. android开源库发布到jcenter图文详解与填坑

    相信很多人都用过开源项目,特别是android studio普及以后,使用开源库更方便简单.而如何上传开源库到jcenter供大家方便使用,虽然网上也有教程,但还是遇坑了,最后总结一下,希望可以帮助大 ...

  5. Android Studio配置Android Annotations框架详解--说说那些坑

    我们开发过程中都需要写些findViewByid.serOnclickListener等类似的代码,虽然不费事,但是一个项目下来,工作量还是很大的.为了节省工作量,运生了很多对应的注解框架.网上的博客 ...

  6. Android Studio 3.0正式版填坑之路

    原文:https://www.jianshu.com/p/9b25087a5d7d   Android Studio 3.0启动图 序言 总看别人的文章,今天尝试着自己来写一篇.在逛论坛时候,无意间发 ...

  7. Android apk签名详解——AS签名、获取签名信息、系统签名、命令行签名

    Apk签名,每一个Android开发者都不陌生.它就是对我们的apk加了一个校验参数,防止apk被掉包.一开始做Android开发,就接触到了apk签名:后来在微信开放平台.高德地图等平台注册时,需要 ...

  8. Android之canvas详解

    首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...

  9. Android Fragment用法详解(2)--动态添加Fragment

    在上一篇文章<Android Fragment用法详解(1)--静态使用Fragment>我们讲解了Fragment的最简单的用法.这次我们来说一说Fragment复杂一丢丢的用法.在代码 ...

随机推荐

  1. TCP/IP入门(2) --网络层

    /** 本篇博客由 126(127不可用) 2^24 -2 B 2^14 -1 128.1 191.255 2^16 -2 C 2^21 -1 192.0.1 223.255.255 2^8 -2 D ...

  2. 【Unity技巧】调整画质(贴图)质量

    写在前面 当我们在Unity中,使用图片进行2D显示时,会发现显示出来的画面有明显的模糊或者锯齿,但是美术给的原图却十分清晰. 要改善这一状况实际上很简单. 造成这样的原因,是Unity在导入图片(或 ...

  3. SpriteBuilder中使用Node类型的ccb动画节点删除时崩溃的问题

    因为节点需要呈现动画效果,虽然只有两个不同帧. 在SpriteBuilder中新建Bullet.ccb文件,类型为node. 添加如上2张图片,并制作动画效果帧. 在游戏中子弹遇到障碍物会被删除,时机 ...

  4. C++闭包: Lambda Functions in C++11

    表达式无疑是C++11最激动人心的特性之一!它会使你编写的代码变得更优雅.更快速! 它实现了C++11对于支持闭包的支持.首先我们先看一下什么叫做闭包 维基百科上,对于闭包的解释是: In progr ...

  5. Spring揭秘 读书笔记 四----方法注入

    我们知道,拥有prototype类型scope的bean,在请求方每次向容器请求该类型对象的时候,容器都会返回一个全新的该对象实例. 我们看下面的例子: public class MockNewsPe ...

  6. BAT Android工程师面试流程解析+还原最真实最完整的一线公司面试题

    尊重原创,转载请写明原文出处:http://blog.csdn.net/sk719887916/article/details/47040931 (skay) 求职和我们每个人息息相关,而求职也有门道 ...

  7. iOS开发经验相关知识

    一. iPhone Size 手机型号 屏幕尺寸 iPhone 4 4s 320 * 480 iPhone 5 5s 320 * 568 iPhone 6 6s 375 * 667 iphone 6 ...

  8. ffdshow 源代码分析 7: libavcodec视频解码器类(TvideoCodecLibavcodec)

    ===================================================== ffdshow源代码分析系列文章列表: ffdshow 源代码分析 1: 整体结构 ffds ...

  9. Using Integrated SOA Gateway in Oracle EBS

    FROM:http://blog.csdn.net/pan_tian/article/details/10159935 Oracle EBS如何与第三方系统相集成?比如这样的需求,X系统知道物料编码, ...

  10. 如何编写51单片机超声波测距SR04_lcd1602显示程序

    超声波测距在我们日常生活中很常见,比如说车在倒退的时候,为了防止车撞到障碍物,会在车尾加上一个超声波测距模块.在智能车比赛中,也有超声波测距模块等等.可见超声波非常的重要,接下来,我们上代码研究一下如 ...