adb补全计划 如何adb安装xapk

xapk介绍
参考 https://www.jianshu.com/p/8d62ee2a5cb7
xapk和apk类似,是android的一种打包应用程序的方法。使用这种方式打成的包以.xapk结尾.可以将.xapk后缀直接改为zip后缀,然后使用解压缩工具解压xapk包。xapk有两种组织方式:

  1. xapk=核心apk+obb文件夹
  2. xapk=核心apk+一个或多个其他apk

两种方式都包含一个核心apk,该apk的名字一般就是包名.apk,是应用必须的骨架包。在核心apk+obb文件夹的组合中,只包含一个apk,即核心apk,应用需要的音视频,图片等资源则抽离成若干个obb文件,存放在obb文件夹下。在核心apk+一个或多个其他apk的组合中,会将不同语言配置,so库等数据抽离成若干个单独的apk。在Google play中下载的应用,大部分都是这两种形式。

以下安装方法暂不涉及OBB 数据

方案1 install-multiple

个人使用方案
参考
https://android.stackexchange.com/questions/221204/how-to-install-xapk-apks-or-multiple-apks-via-adb

1.1 python脚本处理xapk

先用python脚本处理xapk,将其解压为文件夹,包含主apk和副apk

import os
import zipfile
import shutil

# 原始文件名:例如PA01-0018-com.nra.flyermaker-90.xapk
# 希望从中解压并提取出主apk:com.nra.flyermaker.apk
# 并将com.nra.flyermaker.apk命名为PA01-0018-com.nra.flyermaker-90.apk


# 获取当前目录下所有.xapk文件
xapk_files = [file for file in os.listdir('.') if file.endswith('.xapk')]
# 循环处理每个文件
for file in xapk_files:
    print(file)
    # PA01-0018-com.nra.flyermaker-90.xapk

    # 解压缩到当前目录下的与文件同名的文件夹中
    with zipfile.ZipFile(file, 'r') as zip_ref:
        folder_name = os.path.splitext(file)[0]
        zip_ref.extractall(folder_name)

    # 在解压缩后的文件夹中找到apk文件并进行重命名
    folder_files = os.listdir(folder_name)
    apk_files = [name for name in folder_files if name.endswith('.apk')]
    for apk_file in apk_files:

        # 找到解压后的主apk
        if os.path.splitext(apk_file)[0] in os.path.splitext(file)[0]:
            print(apk_file)  
            # com.nra.flyermaker.apk

            apk_path = os.path.join(folder_name, apk_file)
            print("old apk name : " + apk_path) 
            # old apk name : PA01-0018-com.nra.flyermaker-90/com.nra.flyermaker.apk

            new_apk_path = os.path.join(folder_name, folder_name+'.apk')
            print("new apk name : " + new_apk_path) 
            # new apk name : PA01-0018-com.nra.flyermaker-90/PA01-0018-com.nra.flyermaker-90.apk

            os.rename(apk_path, new_apk_path)

            # 将./PA01-0018-com.nra.flyermaker-90/PA01-0018-com.nra.flyermaker-90.apk 移动至 ./PA01-0018-com.nra.flyermaker-90.apk
            shutil.move(new_apk_path, "./"+folder_name+'.apk')

            # 删除./PA01-0018-com.nra.flyermaker-90/文件夹
            shutil.rmtree(folder_name)

以FamilyLink为例,文件夹如下
在这里插入图片描述

1.2 adb install-multipl

处理后将其全部adb安装到设备,即adb install-multipl
APK_PATH为本地实际文件夹
bat脚本如下

@echo off
setlocal enabledelayedexpansion

set APK_PATH=E:\2025p\Other\Third\xxx
set FILES=
for %%f in (%APK_PATH%\*.apk) do (
    set FILES=!FILES! "%%f"
)

adb install-multiple !FILES!

方案2

pm install-create
好像本质上和上述内容是一样的,都是安装所有apk到设备,但因为我解压xapk后的apk太多了,暂时没有尝试,后续再更新。
参考
https://alysoninno.cn/android/install-apk-splits-package/

整体参考
https://blog.csdn.net/Xiers0907/article/details/141476210

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值