自定义清除重复uses-permission申明的AS插件
分享一个我刚到天下布医工作时,写的一个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插件的更多相关文章
- Android必学-异步加载+Android自定义View源码【申明:来源于网络】
Android必学-异步加载+Android自定义View源码[申明:来源于网络] 异步加载地址:http://download.csdn.net/detail/u013792369/8867609 ...
- 解决Spring Security自定义filter重复执行问题
今天做项目的时候,发现每次拦截器日志都会打两遍,很纳闷,怀疑是Filter被执行了两遍.结果debug之后发现还真是!记录一下这个神奇的BUG! 问题描述 项目中使用的是Spring-security ...
- java TreeSet 实现存自定义不可重复数据
本文主要是介绍一下java集合中的比较重要的Set接口下的可实现类TreeSet TreeSet类,底层用二叉树的数据结构 * 集合中以有序的方式插入和抽取元素. * 添加到TreeSet中的元素必须 ...
- 【Oracle/Sql】清除重复而带出的性能问题
笔者使用的环境: # 类别 版本 1 操作系统 Win10 2 数据库 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bi ...
- centos下如何清除重复的$PATH变量值
运行: vim /etc/profile 添加如下代码: awk -F: '{ sep = "" for (i = 1; i <= NF; ++i) ...
- [oracle/sql]关于清除重复,not in方案和not exists方案的对比
有这样一张表: CREATE TABLE tb_sc ( id NUMBER not null primary key, studentid int not null, courseid int no ...
- 自定义Chrome 背景色 (FF需要User Styles插件)
Chrome有个自定义背景色的文件 Custom.css 默认里面什么字都没写 html, body {background-color: #e0dcc0!important;} 这个颜色 ...
- JS+Jquery自定义格式导出HTML为Word(下列插件同样可以用于Excel导出)
这里的word导出主要采用了jquery.wordexport.js.FileSaver.js,做功能之前我也是找了很多网上的资料,里面涉及到js导出word的用的都是这个插件,只是在自定义样式这一块 ...
- 代码神器:拒绝重复编码,这款IDEA插件了解一下.....
作者:HeloWxl www.jianshu.com/p/e4192d7c6844 Easycode是idea的一个插件,可以直接对数据的表生成entity.controller.service.da ...
随机推荐
- 【转】mysql行列转换方法总结
转:http://blog.chinaunix.net/uid-7692530-id-2567582.html 在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解 ...
- 创建view
IF EXISTS(SELECT 1 FROM sys.views WHERE name='V_PARENT_CLIENT') DROP VIEW V_PARENT_CLIENT GO create ...
- STL初步
1.stackstack 模板类的定义在<stack>头文件中.stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型 ...
- jquery multiselect控件
http://www.erichynds.com/blog/jquery-ui-multiselect-widget
- Redis存储Session
net Core 使用Redis存储Session 前言 Asp.net Core 改变了之前的封闭,现在开源且开放,下面我们来用Redis存储Session来做一个简单的测试,或者叫做中间件(m ...
- SQL Server 与内存相关的术语
术语 1. virtual address space 虚拟地址空间 它是一个应用程序可以访问的最大地址空间.32位机上是4G(2^32).虚拟地址空间中的数据不一定在物理内存里.可能在缓存文件中. ...
- 隐私模式启动IE 谷歌浏览器
C:\Program Files (x86)\Internet Explorer\iexplore.exe -privateC:\Program Files (x86)\Google\Chrome\A ...
- JavaEE Tutorials (24) - 资源适配器示例
24.1trading示例369 24.1.1使用出站资源适配器370 24.1.2实现出站资源适配器372 24.1.3运行trading示例37324.2traffic示例374 24.2.1使用 ...
- [Leetcode][Python]51: N-Queens
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 51: N-Queenshttps://oj.leetcode.com/pro ...
- linux之SQL语句简明教程---UNION
UNION 指令的目的是将两个 SQL 语句的结果合并起来.从这个角度来看, UNION 跟 JOIN有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION 的一个限制是两个 SQL 语句 ...