Skip to content

[Bug] 开启 InstallerRedirect 重定向至 InstallerX 时启动失败 (Result Code -91) #16

@cheng1nuo

Description

@cheng1nuo

内容由 AI 生成
大模型:Gemini 3 Flash
版本:Free Tier (2026-03-11)
声明:本 Issue 的技术分析部分由 AI 辅助生成,旨在通过 Logcat 数据深入定位组件调起失败的底层原因。


Issue Title: [Bug] 开启 InstallerRedirect 重定向至 InstallerX 时启动失败 (Result Code -91)

1. 问题描述 (Description)

在 Android 16 (Infinity X ROM) 环境下,使用 InxLocker 的 InstallerRedirect 功能时遇到启动中断问题:

  • 失败场景:当重定向目标设置为 InstallerX (com.rosan.installer.x.revived) 时,LSPosed 日志显示重定向逻辑已执行,但系统无任何反应,目标安装器未能启动。
  • 对比场景:将 InxLocker 的重定向目标设置为 “系统默认安装器” 时,功能工作正常,可以成功调起系统包管理器。
  • 核心现象:重定向至第三方安装器时,底层 ActivityTaskManager 报错返回 result code=-91

2. 环境信息 (Environment)

  • 系统版本: Android 16 (Infinity X ROM)
  • LSPosed 版本: 1.9.2-it(7570)
  • 模块版本: 1.4 (10)
  • 目标安装器: InstallerX 2.3.3.43f487d (com.rosan.installer.x.revived)

3. 关键日志提取 (Key Logcat)

Logcat 记录了重定向至 InstallerX 失败的瞬间,返回了 START_ABORTED (-91)

// InxLocker 识别并执行重定向逻辑
03-11 02:13:21.475 I LSPosedFramework: [InxLocker][I][android] [InstallerRedirect] ==> ActivityStarter.execute: 开始处理Intent...
03-11 02:13:21.523 I LSPosedFramework: [InxLocker][I][android] [InstallerRedirect] - 目标 package: com.rosan.installer.x.revived

// 系统层面拦截了跳转,返回 -91
03-11 02:13:21.532 I ActivityTaskManager: START u0 {act=android.intent.action.VIEW dat=content://tv.danmaku.bili.fileprovider/... typ=application/vnd.android.package-archive flg=0x14000001 pkg=com.rosan.installer.x.revived} with LAUNCH_MULTIPLE from uid 10347 (tv.danmaku.bili) result code=-91

[LSPosed_20260311_021329.zip](https://github.com/user-attachments/files/25879835/LSPosed_20260311_021329.zip)

4. 深度技术分析 (Technical Analysis)

根据 result code=-91 (START_ABORTED) 及 Android 16 的特性,推断原因如下:

  1. URI 授权未同步迁移:原始 Intent 的数据位于 B 站的 FileProvider。由于模块强行将 pkg 修改为第三方包名,系统可能判定该包名(InstallerX)未获得原始调用方授予的 FLAG_GRANT_READ_URI_PERMISSION,基于安全策略中止了启动。
  2. BAL (Background Activity Launch) 限制:日志中提示 callingPackage for (uid=-1, pid=-1) has no WPC。在 Android 16 中,跨应用调起第三方 Activity 的审查极其严格,Hook 过程中可能导致调用栈信息丢失,触发了系统的后台启动拦截。
  3. 对比结论:重定向至“系统默认安装器”正常,说明模块的 Hook 逻辑基本框架无误,但在处理第三方包名时的 Intent 标志位修正URI 访问权限转发上可能存在兼容性问题。

5. 复现步骤 (Steps to Reproduce)

  1. 开启 InxLocker 的安装重定向,目标设为 InstallerX
  2. 在哔哩哔哩客户端下载 APK 并点击安装。
  3. LSPosed 日志提示重定向成功,但界面无响应。
  4. 将 InxLocker 重定向目标改为 “系统默认安装器”,安装请求可正常弹出。

希望这些细节能帮助作者排查在 Android 16 系统上重定向第三方安装器时的 Intent 转发逻辑。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions