检查Android项目第三方库权限

上一篇:

安卓权限检查脚本 - Python

背景:

随着权限的滥用,安卓各大市场开始对各种权限开始限制说明,必须要有对应的说明,不然就会面临无法申请绿色应用,甚至导致应用下架,自己引用的权限是比较清楚的,可是在实际的开发中,我们会引用大量的第三方库,又没办法去除,自己要是每个库都要看,那成百上千的库自己手动查询不仅效率低下,还浪费大量的时间。本文就是针对该痛点去智能帮你查询第三方库权限,方便你查找和解决,可结合上篇文章危险权限处理。希望能够帮助你!!!

位置:

效果图:

代码:

import os
from bs4 import BeautifulSoup

# 项目路径 动态改动
projectPath = 'C:/Users/Administrator/AndroidStudioProjects/bjxRecruit' + '/'
# projectPath = 'H:/AndroidProjects/EyeShield' + '/'
# host主目录 as 缓存都是在此目录下 一般是死的,除非你的修改过主盘
USER_HOME = "C:/Users/Administrator"

path = projectPath + '.idea/libraries/'


class LibData:
    def __init__(self, name, path):
        self.name = name
        self.path = path


class PermissionData:
    def __init__(self, name, permissions):
        self.name = name
        self.permissions = permissions


# 获取文件名和路径
def getLibrariesList(path):
    f = os.walk(path)
    list = []
    for root, dirs, files in f:
        for i in files:
            p = root + i
            # print('路径:',p)
            # print('文件名:',i)
            try:
                s = open(p, 'r', encoding='utf-8')
            except:
                print("文件不存在:",p)
            content = s.read()
            soup = BeautifulSoup(content, 'html.parser')
            urls = soup.find_all('root')

            for l in urls:
                url = l.get('url')
                if not url:
                    continue
                if url.endswith("AndroidManifest.xml"):
                    # print('文件名:', i)
                    # print('文件路径: ', url)
                    list.append(LibData(i, url))
                    break
            soup.clear()
    return list


# 获取含有权限的文件数据
def getHavePermissionList(mainPathList):
    list = []
    for item in mainPathList:
        if not item.path:
            continue
        else:
            l = item.path
            # print('处理前path: ',l)
            l = l.replace('file://$USER_HOME$', USER_HOME)
            l = l.replace('file://', "")
            l = l.replace('jar://$USER_HOME$', USER_HOME)
            l = l.replace('jar://', "")
            # print('处理后path: ', l)

            # print('\n\n打开文件名:', item.name)
            # print('打开路径:',l)
            try:
                file = open(l, 'r', encoding='utf-8')
            except:
                print("文件不存在:",l)
                continue

            content = file.read()
            file.close()
            # print(content)
            soup = BeautifulSoup(content, 'html.parser')
            ps = soup.find_all('uses-permission')
            if not ps:
                continue
            else:
                strArr = []
                for u in ps:
                    p = u.get('android:name')
                    strArr.append(p)
                    # print(p)
                list.append(PermissionData(item.name, strArr))
            soup.clear()
    return list


mainPathList = getLibrariesList(path)
print(f'---------发现第三方数:{len(mainPathList)}个')
list = getHavePermissionList(mainPathList)
print(f'---------含有权限的库数:{len(list)}个')

for m in list:
    print("\n")
    print('第三库名: ',m.name)
    print('第三库里含有的权限: ',m.permissions)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,第三方应用程序可以请求许多权限来执行各种任务,包括自动启动。这些权限可能包括自启动、后台运行和通知等。以下是一些可能有用的方法来检测和控制第三方应用程序的自启动权限: 1. 使用系统设置: 在 Android 设备上,您可以使用内置的系统设置来管理应用程序权限。对于 Android 6.0 及更高版本,您可以按照以下步骤检查和管理应用程序的自启动权限: 1. 打开设备的“设置”应用程序 2. 滚动并选择“应用程序” 3. 从应用程序列表中选择所需的应用程序 4. 选择“电池” 5. 选择“电池优化” 6. 在“非优化的应用程序”选项卡下,您可以查看哪些应用程序具有自启动权限,并选择是否禁用该权限。 2. 使用第三方应用程序: 有许多第三方应用程序可用,可以帮助您管理应用程序的权限,例如 Greenify、Doze 等。这些应用程序允许您监视和控制应用程序的自启动权限,并有助于延长设备的电池寿命。 3. 手动检查: 您可以手动检查应用程序是否具有自启动权限,以下是一些可能有用的方法: 1. 打开设备的“设置”应用程序 2. 滚动并选择“应用程序” 3. 从应用程序列表中选择所需的应用程序 4. 查看权限”选项卡下是否存在“自启动”权限 请注意,Android 系统的不同版本可能会有所不同,因此某些步骤和选项可能会有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值