android 重复申请权限,去除AndroidManifest.xml里重复申请的权限(uses-permission)
2017年的第一篇文章,新的起点,不忘初心
花了点时间,解决了最近遇到的一个问题:
在引用第三方的服务时都会在Manifest中添加权限,一般都是无脑的复制粘贴,久而久之,项目里重复的权限越来越多
在我印象里好像以前的编辑器是会提醒你在AndroidManifest.xml里重复申请的权限,无论是eclipse还是Android studio,不过很奇怪,现在好像这个功能没有了,就算你重复申请了很多,只会在你编译的时候在日志里警告你一下,不会报错。
但是对于有严重强迫症的我,怎么能忍一大堆重复的权限呢,so ...
用Python写了个简单的脚本,方便快捷
欢迎提 bug
去除AndroidManifest.xml里重复申请的权限(uses-permission)
使用说明:
本程序使用ElementTree对XML进行处理,它在Python2.5以后成为Python标准库的一部分,但是Python2.4之前需要单独安装。
使用方法:
将 ClearManifest.py 和 AndroidManifest.xml 放在一个文件夹下
然后执行 python ClearManifest.py
得到的 AndroidManifest.xml 就是清理后的文件( AndroidManifest_backup.xml 为备份)
以下为源码:
# -*- coding: UTF-8 -*-
'''
Created on 2017年1月1日
@author: ckdroid
'''
import xml.etree.ElementTree as ET
import sys
import shutil
class PCParser(ET.XMLTreeBuilder):
def __init__(self):
ET.XMLTreeBuilder.__init__(self)
# assumes ElementTree 1.2.X
self._parser.CommentHandler = self.handle_comment
def handle_comment(self, data):
self._target.start(ET.Comment, {})
self._target.data(data)
self._target.end(ET.Comment)
# 备份源文件
shutil.copy("AndroidManifest.xml", "AndroidManifest_backup.xml")
try:
# 定义namespace,这一步必须在parse之前做
ET.register_namespace('android', "http://schemas.android.com/apk/res/android")
ET.register_namespace('tools', "http://schemas.android.com/tools")
ET.register_namespace('app', "http://schemas.android.com/apk/res-auto")
parser = PCParser()
tree = ET.parse("AndroidManifest.xml",parser) #打开xml文档
root = tree.getroot() #获得root节点
except Exception, e:
print "Error:cannot parse file:AndroidManifest.xml."
print e
sys.exit(1)
print('root.tag =', root.tag)
#获得 android 的 name space
name_space="{http://schemas.android.com/apk/res/android}"
mdict = { };
print('----- clear uses-permission -----')
for element in root.findall('uses-permission'):
rank = element.get(name_space+'name')
if(mdict.has_key(rank)):
root.remove(element)
print(rank)
else:
mdict[rank]=element
print('----- clear done -----')
tree.write('AndroidManifest.xml',encoding="utf-8", xml_declaration=True, method='xml')
android 重复申请权限,去除AndroidManifest.xml里重复申请的权限(uses-permission)相关推荐
- android基础知识13:AndroidManifest.xml文件解析【转载】
注:本文转载于:http://blog.csdn.NET/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...
- android id 重名_android 中Xml里面的id重名问题
今天在做项目的时候,居然发现@+id 居然可以重名,而且 情况一:同个一个Xml文件中的同名 在同个一个Xml文件的中若同名了,则前一个有效,而后一个无效,即后一个Null掉.如: android:i ...
- Android应用清单文件:AndroidManifest.xml
AndroidMainfest.xml清单文件是每个Android项目所必需的,它是整个Android应用的全局描述文件. <?xml version="1.0" encod ...
- android 微信6.2.0 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8" standalone="no"?> <manif ...
- python去重复行_python 去除Excel中的重复行数据
原博文 2019-08-05 16:15 − 导入pandasimport pandas as pd1.读取excel中的数据:frame = pd.DataFrame(pd.read_csv('ex ...
- Android系统版本在6.0+以上需要动态申请权限
在Androidmanifest.xml里申请过还不够,还需要在Mainactivity里动态申请.调试时报错有2种,不能创建父目录和连接超时.好用的框架有com.github.dfqin:grant ...
- android 获取AndroidManifest.xml中的meta-data元素
android 开发中: 在AndroidManifest.xml中,<meta-data>元素可以作为子元素, 被包含在<activity>.<application& ...
- android调用另一app的xml,Android 7.0+调用其他App打开文件
近期需要用到读取Android设备外存中的JSON和Word,在前期开发时用于调试的是Android 6.0的米4,当拿到实际应用环境(Android 7.0)时,Android 6.0之后的版本 ...
- 对Android系统权限的认识(包含如何获得root权限思路)
点击打开链接 Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制, Android系统权限相关的内容, (一)linux文件系统上的权限 -r ...
最新文章
- C#让windows程序只运行一次
- 如何解决Keil5打红叉的问题
- 小白入门深度学习 | 第四篇:配置PyTorch环境
- Linux线程时间片如何修改,请教如何修改线程时间片
- STL--lower_bound()upper_bound();
- 面向视频原生,火山引擎发布视频云与边缘云软硬一体的新云解决方案
- flatMap()和事件顺序– RxJava常见问题解答
- 关于mysql的cpu占用高的问题
- vue学习:7、路由跳转
- 温故而知新 forEach 无法中断(break)的问题
- 最简单的PHP MVC留言本实例(二)
- soapUI简介、安装使用教程、接口(性能)测试
- CSGO中最新骗术!新老玩家须知-CSGO防骗指南
- 计算机考研的初试和复试的区别,考研初试和复试之间的区别
- 4、6、7、8、9、11、13、27的倍数的特征
- 面试常见的 10 大问题
- 笔记 09-集合(HashSet HashMap TreeMap) 练习
- ps人物素描及黑白上色
- tree--树,最常见的复杂关系结构
- 劣质VGA线导致不支持非标准分辨率显示
热门文章
- 【Rayeager PX2分享】OpenCV入门之图像显示
- MySQLdb不能调用Sql脚本?
- 11种刷新按钮的方法
- Part 1——使用 Go Modules
- Make sure you've included captcha.urls as explained in the INSTALLATION section on
- Cassandra 权威指南
- Linux取消挂载,删除用户及其目录
- 【Linux开发】【Qt开发】Qt界面键盘、触摸屏、鼠标的响应设置
- JMeter启动时显示Could not open/create prefs root node Software\JavaSoft\Prefs at root 0X80000002...
- 网页设计中时尚​​的下拉菜单案例