吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 814|回复: 47
上一主题 下一主题
收起左侧

[Android 讨论] 分享一下AI帮我写的XAPK 转apk脚本

  [复制链接]
回帖奖励 57 CB吾爱币 回复本帖可获得 1 CB吾爱币奖励! 每人限 1 次
跳转到指定楼层
楼主
hybpjx 发表于 2026-3-3 13:33 回帖奖励
最近搞国外的网站老遇到XAPK 就自己找东西 让ai写了一个 脚本。大家可以看看

另外设置100个 回帖奖励吧~~~

[Python] 纯文本查看 复制代码
import zipfile
import os
import shutil
import sys
import subprocess

def unzip_file(src, dst):
    with zipfile.ZipFile(src, 'r') as z:
        z.extractall(dst)

def find_files(base, ext):
    result = []
    for root, _, files in os.walk(base):
        for f in files:
            if f.endswith(ext):
                result.append(os.path.join(root, f))
    return result

def copy_files(files, dst):
    os.makedirs(dst, exist_ok=True)
    for f in files:
        shutil.copy(f, dst)

def copy_obb(base, dst):
    for root, dirs, _ in os.walk(base):
        for d in dirs:
            if d == 'obb':
                shutil.copytree(os.path.join(root, d), os.path.join(dst, d), dirs_exist_ok=True)

def adb_install_multiple(apk_dir):
    apk_list = sorted(find_files(apk_dir, '.apk'))
    if not apk_list:
        print('no apk files to install')
        return
    print('installing via adb...')
    cmd = ['adb', 'install-multiple'] + apk_list
    try:
        subprocess.run(cmd, check=True)
        print('install success')
    except subprocess.CalledProcessError:
        print('install failed')

def convert_xapk(xapk_path, output_dir=None, auto_install=False):
    if not os.path.exists(xapk_path):
        print('file not found')
        return
    if output_dir is None:
        output_dir = os.path.splitext(xapk_path)[0]
    os.makedirs(output_dir, exist_ok=True)

    unzip_file(xapk_path, output_dir)
    apk_dir = os.path.join(output_dir, 'apk')
    obb_dir = os.path.join(output_dir, 'obb')

    apk_files = find_files(output_dir, '.apk')
    if apk_files:
        copy_files(apk_files, apk_dir)
        print('apk extracted')

    copy_obb(output_dir, obb_dir)
    print('obb extracted')

    if auto_install:
        adb_install_multiple(apk_dir)

    print('done:', output_dir)

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print('usage: python xapk_to_apk.py app.xapk [output_dir] [--install]')
    else:
        xapk = sys.argv[1]
        out = sys.argv[2] if len(sys.argv) > 2 and not sys.argv[2].startswith('--') else None
        install_flag = '--install' in sys.argv
        convert_xapk(xapk, out, install_flag)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| hybpjx 发表于 2026-3-3 13:36 |楼主
q2119990 发表于 2026-3-3 13:35
这个咋用,不懂这个

xapk_turn_apk

💡 简介

这是一个用 Python 编写的实用工具,用于处理 Android .xapk 文件。

.xapk 是一种特殊的 Android 应用程序包格式,它将基础 .apk 文件与大型游戏数据文件(通常是 .obb 文件)打包在一起。

本脚本可以帮助你:

  1. .xapk 文件解压,并自动提取出所有 .apk 文件和 .obb 数据文件。
  2. (可选) 使用 ADB (Android Debug Bridge) 工具自动安装提取出的所有 .apk 文件。

⚙️ 使用方法

🛠️ 前提条件
  1. Python 3: 确保你的系统上安装了 Python 3。
  2. ADB: 如果需要使用自动安装功能 (--install),请确保 ADB 已安装且在系统环境变量 (PATH) 中。
🚀 运行脚本

将脚本保存为 xapk_converter.py 后,在命令行中执行以下命令:

功能 命令格式 结果
仅转换 python xapk_converter.py app_name.xapk 在同目录下创建 app_name 文件夹,包含提取的 APK 和 OBB 文件。
指定输出目录 python xapk_converter.py app_name.xapk /path/to/output 将文件提取到指定的文件夹。
转换并安装 python xapk_converter.py app_name.xapk --install 转换完成后,尝试通过 ADB 安装所有 .apk 文件。
指定目录并安装 python xapk_converter.py app_name.xapk /path/to/output --install 转换到指定位置,并尝试通过 ADB 安装。
推荐
冥界3大法王 发表于 2026-3-3 14:05

回帖奖励 +1 CB吾爱币

这是一个用于处理XAPK文件的Python脚本,我将逐行解释:

导入模块 (1-5行)

import zipfile  # 用于处理ZIP压缩文件
import os       # 提供文件和目录操作功能
import shutil   # 提供高级文件操作,如复制、移动
import sys      # 访问命令行参数
import subprocess # 运行外部命令(如adb)

解压函数 (7-9行)

def unzip_file(src, dst):
    with zipfile.ZipFile(src, 'r') as z:
        z.extractall(dst)
  • 功能:解压ZIP文件
  • src:源文件路径
  • dst:目标目录
  • 使用with语句自动管理文件资源

查找文件函数 (11-17行)

def find_files(base, ext):
    result = []
    for root, _, files in os.walk(base):
        for f in files:
            if f.endswith(ext):
                result.append(os.path.join(root, f))
    return result
  • 功能:递归查找指定扩展名的所有文件
  • os.walk:遍历目录树,返回(root, dirs, files)
  • 忽略目录名(用_占位)
  • 匹配文件扩展名并返回完整路径列表

复制文件函数 (19-24行)

def copy_files(files, dst):
    os.makedirs(dst, exist_ok=True)
    for f in files:
        shutil.copy(f, dst)
  • 功能:将文件列表复制到目标目录
  • exist_ok=True:如果目录存在也不会报错
  • shutil.copy:复制文件(不保留元数据)

复制obb文件夹函数 (26-30行)

def copy_obb(base, dst):
    for root, dirs, _ in os.walk(base):
        for d in dirs:
            if d == 'obb':
                shutil.copytree(os.path.join(root, d), os.path.join(dst, d), dirs_exist_ok=True)
  • 功能:查找并复制名为"obb"的文件夹
  • OBB是Android应用的扩展数据文件
  • dirs_exist_ok=True:允许覆盖已存在的目录

ADB安装函数 (32-44行)

def adb_install_multiple(apk_dir):
    apk_list = sorted(find_files(apk_dir, '.apk'))
    if not apk_list:
        print('no apk files to install')
        return
    print('installing via adb...')
    cmd = ['adb', 'install-multiple'] + apk_list
    try:
        subprocess.run(cmd, check=True)
        print('install success')
    except subprocess.CalledProcessError:
        print('install failed')
  • 功能:使用adb安装多个APK文件
  • adb install-multiple:Android命令,同时安装多个APK
  • check=True:如果命令执行失败会抛出异常
  • 异常处理捕获安装失败的情况

主转换函数 (46-67行)

def convert_xapk(xapk_path, output_dir=None, auto_install=False):
    if not os.path.exists(xapk_path):
        print('file not found')
        return
    if output_dir is None:
        output_dir = os.path.splitext(xapk_path)[0]
    os.makedirs(output_dir, exist_ok=True)
  • 检查XAPK文件是否存在
  • 如果没有指定输出目录,使用XAPK文件名(不含扩展名)
  • 创建输出目录
    unzip_file(xapk_path, output_dir)
    apk_dir = os.path.join(output_dir, 'apk')
    obb_dir = os.path.join(output_dir, 'obb')
  • 解压XAPK文件
  • 定义APK和OBB的目标目录
    apk_files = find_files(output_dir, '.apk')
    if apk_files:
        copy_files(apk_files, apk_dir)
        print('apk extracted')

    copy_obb(output_dir, obb_dir)
    print('obb extracted')
  • 查找所有APK文件并复制到apk目录
  • 查找并复制obb文件夹
    if auto_install:
        adb_install_multiple(apk_dir)

    print('done:', output_dir)
  • 如果启用了自动安装,调用ADB安装函数
  • 输出完成信息

主程序入口 (69-76行)

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print('usage: python xapk_to_apk.py app.xapk [output_dir] [--install]')
    else:
        xapk = sys.argv[1]
        out = sys.argv[2] if len(sys.argv) > 2 and not sys.argv[2].startswith('--') else None
        install_flag = '--install' in sys.argv
        convert_xapk(xapk, out, install_flag)
  • 检查命令行参数
  • 解析参数:
    • 第一个参数:XAPK文件路径
    • 第二个参数(可选):输出目录(不以"--"开头)
    • 检查是否包含"--install"标志
  • 调用主转换函数

使用示例

# 基本用法
python xapk_to_apk.py app.xapk

# 指定输出目录
python xapk_to_apk.py app.xapk output_folder

# 解压并自动安装
python xapk_to_apk.py app.xapk --install

# 指定输出目录并安装
python xapk_to_apk.py app.xapk output_folder --install
沙发
q2119990 发表于 2026-3-3 13:35
4#
chencs 发表于 2026-3-3 13:38

回帖奖励 +1 CB吾爱币

一般都是用XAPK Installer直接安装
5#
gugouo163 发表于 2026-3-3 13:38

回帖奖励 +1 CB吾爱币

现在要得到这个xapk文件也不容易了
6#
小凯凯 发表于 2026-3-3 13:45

回帖奖励 +1 CB吾爱币

虽然看不懂,但觉得很厉害
7#
youfeili520 发表于 2026-3-3 13:47

回帖奖励 +1 CB吾爱币

大佬,看着很厉害!
8#
xifan520 发表于 2026-3-3 13:50

回帖奖励 +1 CB吾爱币

这个ai竟然没写代码注释
9#
刘昊然 发表于 2026-3-3 13:57

回帖奖励 +1 CB吾爱币

可以直接做成一个小工具
10#
tztfznc191398 发表于 2026-3-3 14:05

回帖奖励 +1 CB吾爱币

不错不错,感谢楼主,解决了我一个大问题,拿来试试看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-3-18 07:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表