安卓apk 脚本判断32位和64位兼容,还是纯64位

安卓工程 打包 32位和64位说明

        ndk {// abiFilters 'armeabi','arm64-v8a'  32位和64位// abiFilters 'arm64-v8a'  纯64位}

常用类型说明

  • armeabi-v7a 第7代及以上的ARM处理器(ARM32位),市面上大多数手机使用此CPU类型。

  • arm64-v8a 第8代、64位ARM处理器(ARM64位),最近两年新发的设备使用此CPU类型,可以兼容使用armeabi-v7a的so库。

  • x86 少部分平板使用x86,AS模拟器中选了intel x86时使用x86处理器,以及其它常用三方模拟器通常使用x86

如何判断apk的位数常规方法

把apk 文件转为zip,然后读取lib 文件加的子文件类型

举个例子

解压后的zip

纯64位的是

32位和64位兼容版

利用脚本python实现

代码

import zipfile
import shutil
import os# APK文件路径
apk_file_path = '/Users/app-release.apk'
# 输出的ZIP文件路径
zip_file_path = '/Users/app-release.zip'# 读取APK文件
with zipfile.ZipFile(apk_file_path, 'r') as apk_zip:# 创建一个新的ZIP文件with zipfile.ZipFile(zip_file_path, 'w') as zip_output:# 遍历APK文件中的每个文件for filename in apk_zip.namelist():# 读取文件内容with apk_zip.open(filename, 'r') as file:# 将文件内容写入新的ZIP文件zip_output.writestr(filename, file.read())print('转换完成')# 特定子目录的路径
target_dir = 'lib/'# 使用zipfile模块打开ZIP文件
with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:# 列出ZIP文件中的所有文件和文件夹zip_info_list = zip_ref.infolist()# 存储亲儿子目录的名称sub_dirs = []# 遍历zip_info_list,查找目标目录的亲儿子目录for zip_info in zip_info_list:# 检查当前文件是否在目标目录中if zip_info.filename.startswith(target_dir) and '/' in zip_info.filename[len(target_dir):]:# 获取亲儿子目录的名称sub_dir_name = zip_info.filename[len(target_dir):].split('/')[0]sub_dirs.append(sub_dir_name)# 转换为集合以去除重复的子目录名称unique_sub_dirs = set(sub_dirs)# 打印亲儿子目录的信息print(f"亲儿子目录数量: {len(unique_sub_dirs)}, 亲儿子目录名称: {', '.join(unique_sub_dirs)}")# 原始APK文件的路径
source_apk_path = apk_file_path# 目标路径和文件名
target_directory = '/Users/release/'
target_file_name = '64位.apk'
if len(unique_sub_dirs)==2: target_file_name = '32位_64位.apk'
target_apk_path = os.path.join(target_directory, target_file_name)# 复制文件
shutil.copy2(source_apk_path, target_apk_path)# 重命名文件(如果需要的话,上面的shutil.copy2已经复制并保留了元数据)
# os.rename(source_apk_path, target_apk_path)print(f'文件已复制并重命名为: {target_apk_path}')

效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/689538.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探讨 vs2019 c++ 里函数指针与函数类型在使用上的语法区别

(1)咱们可以用 decltype () 来判断函数的类型。但以这个类型定义有用的可指向已存在函数的变量,却行不通。测试如下: 如果把上面的注释去掉会报错: 所以函数类型只有语法意义。但在使用上没有函…

初识java--javaSE(3)--方法,递归,数组,

文章目录 一 方法的使用1.1 什么是方法?main方法注意事项 1.2 方法的调用嵌套调用在方法调用时形参与实参的关系: 1.3 方法的重载方法重载的意义?总结方法重载:方法签名: 二 递归什么是递归?递归的精髓&…

任务:单域,域树的搭建

一、单域: 搭建所需的系统:win2016 sever,win10 1.在创建域前,先设置静态ip 先查看win2016 sever的IP, ip:192.168.154.133 网关:192.168.154.2 DNS服务器:192.168.154.2 设置…

嵌入式基础课程配套电机FOC伺服电机开发板AT32F403磁编码IMU姿态

嵌入式基础课程配套电机FOC伺服电机开发板AT32F403磁编码IMU姿态 带你入门嵌入式有二十多年开发经验的老技骨做技术支持整个开发包硬件包括电机2205,支持12V到24V宽输入,配套12V2A电源。包装原理图和PCB嵌入式软件嵌入式基础课程 带你入门嵌入式 电机FO…

人生是旷野,不是轨道

最近看到一句话,很喜欢,分享一下。"人生是旷野,不是轨道"。人生不是固定的方程式,也没有唯一答案,没有谁生来就应该是什么样。别太被太多世俗观念束缚住手脚,每个人都有权利自由生长,…

X9C103SIZT1 数字电位计 IC 10K SOIC-8 参数 应用案例

X9C103SIZT1 是一款数字电位器,属于 X9C103 系列。它是一款100抽头的非易失性数字电位器,阻值为 10 kOhm,封装形式为 SOIC-8。这款器件常用于需要调整电子设备阻值的应用中,如音频设备、电源管理以及传感器校准等。 X9C103SIZT1 的…

2024数维杯数学建模B题生物质和煤共热解问题的研究原创论文分享

大家好,从昨天肝到现在,终于完成了2024数维杯数学建模挑战赛B题的完整论文啦。 实在精力有限,具体的讲解大家可以去讲解视频: 2024数维杯数学建模B题煤共热解每一问高质量完整代码讲解!_哔哩哔哩_bilibili 2024数维杯…

py黑帽子学习笔记_网络编程工具

tcp客户端 socket.AF_INET表示使用标准IPV4地址和主机名 SOCK_STREAM表示这是一个TCP客户端 udp客户端 udp无需连接,因此不需要client.connect这种代码 socket.SOCK_DGRAM是udp的 tcp服务端 server.listen(5)表示设置最大连接数为5 发现kill server后端口仍占用…

SG-PEG-SG能与许多生物分子如蛋白质和核酸等进行有效结合

【试剂详情】 英文名称 SG-PEG-SG 中文名称 聚乙二醇二琥珀酰亚胺戊二酸酯, 琥珀酰亚胺酯-聚乙二醇-琥珀酰亚胺酯 外观性状 由分子量决定,固体或者液体。 分子量 0.4k,0.6k,1k,2k,3.4k,5…

李宏毅-注意力机制详解

原视频链接:attention 一. 基本问题分析 1. 模型的input 无论是预测视频观看人数还是图像处理,输入都可以看作是一个向量,输出是一个数值或类别。然而,若输入是一系列向量,长度可能会不同,例如把句子里的…

C#实现简单音乐文件解析播放——Windows程序设计作业2

1. 作业内容 编写一个C#程序,要求实现常见音乐文件的播放功能,具体要求如下:     1). 播放MP3文件: 程序应能够读取MP3文件,并播放其中的音频。     2). 播放OGG文件: 应能够播放ogg文件。     …

Qt | QSpinBox 类 QDoubleSpinBox 类(微调框)

01、QSpinBox 类 1、QSpinBox类是 QAbstractSpinBox 类的直接子类和具体实现, 2、QSpinBox 类被设计用于处理整数和离散值集合,对于浮点值使用 QDoubleSpinBox 类实现。 3、QSpinBox 默认只支持整数值,但可通过其内部的成员函数进行扩展,以支持使用不同的 字符串。 02…