当前位置:   article > 正文

Python编码实现获取APK文件信息_python apk()

python apk()

以下演示内容在window的操作系统

一、使用 Python 的 APK 包实现

from androguard.core.bytecodes.apk import APK

# 获取本地apk路径
apk_path = 'local_path/test.apk'

# 加载APK文件
apk = APK(apk_path)

# 获取包名(Package Name)
package_name = apk.get_package()

# 获取应用程序名称(Application Name)
application_name = apk.get_app_name()

# 获取应用程序版本名称(Version Name)
version_name = apk.get_androidversion_name()

# 获取应用程序版本号(Version Code)
version_code = apk.get_androidversion_code()

# 编译版本号(目标SDK版本)
target_sdk_version = apk.get_target_sdk_version()

# sha1_签名信息
sha1 = apk.get_certificate(apk.get_signature_name()).sha1_fingerprint

"""
APK架构信息
armeabi:基于ARM架构的32位设备,适用于较旧的ARM处理器。
armeabi-v7a:基于ARM架构的32位设备,适用于大多数ARMv7处理器及以上。
arm64-v8a:基于ARM架构的64位设备,适用于ARMv8处理器及以上。
x86:基于x86架构的32位设备,适用于x86处理器。
x86_64:基于x86架构的64位设备,适用于x86_64处理器。
"""
architecture = {
    "armeabi": False,
    "armeabi-v7a": False,
    "arm64-v8a": False,
    "x86": False,
    "x86_64": False
}

apk_files = apk.get_files()
for file in apk_files:
    for key, value in architecture.items():
        if value == False and file.startswith('lib/' + key + '/'):
            architecture[key] = True

print('application_name:', application_name)
print('package_name:', package_name)
print('version_code:', version_code)
print('version_name:', version_name)
print('target_sdk_version:', target_sdk_version)
print('architecture:', architecture)
print('SHA1:', sha1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

二、Python调用 aapt 命令实现

1、下载 aapt

下载完成后注意配置环境变量!!!
地址:https://www.mediafire.com/file/e8ww8wbgcowbti4/aapt

在这里插入图片描述

2、代码实现

import os
import re
import subprocess

#获取当前操作系统
current_os = os.name

# 根据当前操作系统选择换行符
if current_os == 'nt':  # Windows系统
    line_break = '\r\n'
elif current_os == 'posix':  # Linux、Unix-like系统
    line_break = '\n'
else:  # 其他操作系统,默认使用换行符'\n'
    line_break = '\n'

# 使用aapt命令获取APK信息 (apk_path:替换为你的APK文件路径)
command = ['aapt', 'dump', 'badging', apk_path]
result = subprocess.run(command, capture_output=True)

# 解析输出以获取常见信息
output = result.stdout.decode('utf-8', 'ignore')
lines = output.split(line_break)

package_name = re.search(r"package: name='(.*?)'", lines[0]).group(1)
version_code = re.search(r"versionCode='(.*?)'", lines[0]).group(1)
version_name = re.search(r"versionName='(.*?)'", lines[0]).group(1)
sdk_version = re.search(r"sdkVersion:'(.*?)'", lines[1]).group(1)

is_arch32 = lines[len(lines)-2].find("armeabi-v7a") != -1
is_arch64 = lines[len(lines)-2].find("arm64-v8a") != -1

# 打印获取的信息
print("Package Name:", package_name)
print("Version Code:", version_code)
print("Version Name:", version_name)
print("SDK Version:", sdk_version)
print("是否支持32位:", is_arch32)
print("是否支持64位:", is_arch64)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

运行结果:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/675655
推荐阅读
相关标签
  

闽ICP备14008679号