37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
"""
|
||
APK解析工具
|
||
用于从APK文件中提取版本信息
|
||
"""
|
||
import zipfile
|
||
import xml.etree.ElementTree as ET
|
||
import struct
|
||
|
||
|
||
# 如果安装了 androguard,使用更可靠的解析方法
|
||
def parse_apk_with_androguard(apk_path):
|
||
"""
|
||
使用 androguard 库解析 APK
|
||
需要先安装: pip install androguard
|
||
"""
|
||
try:
|
||
from androguard.core.apk import APK
|
||
|
||
apk = APK(apk_path)
|
||
version_code = apk.get_androidversion_code()
|
||
version_name = apk.get_androidversion_name()
|
||
|
||
print(f"APK解析成功: version_code={version_code}, version_name={version_name}")
|
||
|
||
return {
|
||
'version_code': int(version_code) if version_code else None,
|
||
'version_name': version_name
|
||
}
|
||
except ImportError as ie:
|
||
print(f"androguard 导入失败: {str(ie)}")
|
||
return parse_apk(apk_path)
|
||
except Exception as e:
|
||
print(f"使用androguard解析APK失败: {str(e)}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
return None
|