分享一个我刚到天下布医工作时,写的一个android studio插件。

做安卓项目时,经常继承一些第三方sdk,这些sdk都会申请权限,导致AndroidManifest.xml中的uses-permission申明大量重复。虽然貌似不去掉重复的申明不会影响app运行,但是能去掉不是更好么。

这个插件的功能就是用来去除重复申明的。

网盘链接:http://pan.baidu.com/s/1qXWn9fu

源码地址:https://github.com/LFWheel/ClearManifest

使用方法就是下载网盘中的jar包,然后在AS中,File-Settings-plugins-Install plugin from disk,选择刚刚下载的jar包,安装,重启AS即可。

这时你打开manifest文件,点击AS上的Edit->ClearManifest,就行了。要注意:要想清除一下manifest中的重复的permission时,要打开manifest文件,并且它是你正选中的文件。然后再:Edit->ClearManifest。

实现原理没什么难的,就是解析AndroidManifest.xml文件,解析xml我用的是dom4j。然后用一个HashMap存一下解析过的uses-permission节点,key就是permission的name。遇到重复key时就remove。最后再把文件写回。

坑爹的是,打包成jar包有需要注意的地方。更坑的是,我忘了当时是怎么打包成功的了。。。。以后有空再回忆一下吧。到时候再来分享。

自定义清除重复uses-permission申明的AS插件的更多相关文章

  1. Android必学-异步加载+Android自定义View源码【申明:来源于网络】

    Android必学-异步加载+Android自定义View源码[申明:来源于网络] 异步加载地址:http://download.csdn.net/detail/u013792369/8867609 ...

  2. 解决Spring Security自定义filter重复执行问题

    今天做项目的时候,发现每次拦截器日志都会打两遍,很纳闷,怀疑是Filter被执行了两遍.结果debug之后发现还真是!记录一下这个神奇的BUG! 问题描述 项目中使用的是Spring-security ...

  3. java TreeSet 实现存自定义不可重复数据

    本文主要是介绍一下java集合中的比较重要的Set接口下的可实现类TreeSet TreeSet类,底层用二叉树的数据结构 * 集合中以有序的方式插入和抽取元素. * 添加到TreeSet中的元素必须 ...

  4. 【Oracle/Sql】清除重复而带出的性能问题

    笔者使用的环境: # 类别 版本 1 操作系统 Win10 2 数据库 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bi ...

  5. centos下如何清除重复的$PATH变量值

    运行: vim /etc/profile 添加如下代码: awk -F: '{    sep = ""    for (i = 1; i <= NF; ++i)        ...

  6. [oracle/sql]关于清除重复,not in方案和not exists方案的对比

    有这样一张表: CREATE TABLE tb_sc ( id NUMBER not null primary key, studentid int not null, courseid int no ...

  7. 自定义Chrome 背景色 (FF需要User Styles插件)

    Chrome有个自定义背景色的文件  Custom.css 默认里面什么字都没写 html, body {background-color: #e0dcc0!important;}      这个颜色 ...

  8. JS+Jquery自定义格式导出HTML为Word(下列插件同样可以用于Excel导出)

    这里的word导出主要采用了jquery.wordexport.js.FileSaver.js,做功能之前我也是找了很多网上的资料,里面涉及到js导出word的用的都是这个插件,只是在自定义样式这一块 ...

  9. 代码神器:拒绝重复编码,这款IDEA插件了解一下.....

    作者:HeloWxl www.jianshu.com/p/e4192d7c6844 Easycode是idea的一个插件,可以直接对数据的表生成entity.controller.service.da ...

随机推荐

  1. html基础之 input:type

    Input表示Form表单中的一种输入对象,其又随Type类型的不同而分文本输入框,密码输入框,单选/复选框,提交/重置按钮等,下面一一介绍.1,type=text输入类型是text,这是我们见的最多 ...

  2. Fragment之三:根据屏幕尺寸加载不同的Fragment

    Fragment一个重要的作用在于根据屏幕的尺寸或者方向加载不同的布局. 未完待续

  3. 模块化开发之sea.js实现原理总结

    seajs官网说:seajs是一个模块加载器,所以学习它并不难. 在我的理解就是:本来我们是需要手动创建 script标签 引入 js文件的,但用seajs后,它就自动帮我们完成这些工作. 这里只说实 ...

  4. HTML中发送方式(method)中get和post的比较

    get的方式是将表单控件的控件名name和取值value信息经过编码后,通过URL发送(可以在地址栏里看到).而post则将表单的内容通过http发送.一个 get通过URL传送变量,能传送的数据总量 ...

  5. SQL Server 内存开销分析

    第一步: 每一类资源用了多少内存. select          clerks.type,         sum(clerks.virtual_memory_reserved_kb) as Res ...

  6. MEMS陀螺仪—MEMS产品中的杀手

    MEMS陀螺仪(gyroscope)将成为MEMS产品的杀手.它已经被大量地应用在消费和汽车产品上.它的性能每两年提高十倍,它的成本却由于集成度和需求量的提高而不断下降.一旦MEMS陀螺仪的价格下降到 ...

  7. thinkphp中的_get,_post,_request

    ThinkPHP没有改变原生的PHP系统变量获取方式,所以依然可以通过$_GET. $_POST.$_SERVER.$_REQUEST 等方式 来获取系统变量,不过系统的Action类提供了对系统变量 ...

  8. C语言的本质(30)——C语言与汇编之ELF文件格式

    ELF(Executable and Linking Format)文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,ELF是一种对象文件的格式,用于定义不同类型的对象文件(Obj ...

  9. redhat enterprise 6.3 x86_64 上安装VirtualBox详细教程

    这个教程真难找..... 安装第一步遇到的问题就是不能使用yum安装包,这是由于redhat是收费版,所以需要更新yum源列表,具体可以参考 http://www.cnblogs.com/tina-s ...

  10. Codeforces 433 C. Ryouko&#39;s Memory Note

    C. Ryouko's Memory Note time limit per test 1 second memory limit per test 256 megabytes input stand ...